2011-05-13 77 views
5

我有两个表已经被创建。 DocumentDocumentStyle。他们通过DocumentID列有一对一的关系。然而,Id表在Document表中,DocumentId表在DocumentStyle表中。一对一关系,不同的关键列名称,实体框架,代码优先的方法

像这样的事情

> Document   DocumentStyle 
> |----------|  |----------------| 
> |Id - Key |<------>|DocumentId- key | 
> |Name-VChar|  |Color  -VChar| 
> |Desc-VChar|  |Font  VChar | 
> |----------|  |----------------| 

,我发现了以下错误VS

的ForeignKeyAttribute物业 'DocumentStyle' 在类型 'KII.Models.Document' 是无效的。 外键名称'DocumentId'在依赖类型 'KII.Models.Document'中找不到 。名称值 应该是以逗号分隔的 外键属性名称列表。

这是文档模型类的部分代码

[ForeignKey("DocumentId")] public 
DocumentStyle DocumentStyle { get;set; } 

编辑:

这是我的类的代码。

public class Document 
    { 
     [Key] 
     public int ID { get; set; } 
     public string Name { get; set; } 
     public int FundId { get; set; } 
     public int ClientId { get; set; } 

     [ForeignKey("FundId")] 
     public Fund Fund { get; set; } 

     [ForeignKey("ClientId")] 
     public Client Client { get; set; } 
     //public ImageWrapper Logo { get; set; } 

     [ForeignKey("ID")] 
     public DocumentStyle DocumentStyle { get; set; } 

     public Document() 
     { 

     } 

     public Document(DocumentStyle documentStyle) 
     { 
      DocumentStyle = documentStyle; 
     } 

    } 


public class DocumentStyle 
    { 

     public DocumentStyle() 
     { 

     } 

     [Key] 
     [DisplayName("Document ID")] 
     public int DocumentId { get; set; } 

     [ForeignKey("DocumentId")] 
     public Document Document { get; set; } 

     [DisplayName("Title Foreground Color")] 
     public string TitleForegroundColor { get; set; } 

     [DisplayName("Title Background Color")] 
     public string TitleBackgroundColor { get; set; } 

     [DisplayName("Title Font Family")] 
     public string TitleFontFamily { get; set; } 

     [DisplayName("Title Font Size")] 
     public string TitleFontSize { get; set; } 

     [DisplayName("Title Font Style")] 
     public string TitleFontStyle { get; set; } 

     [DisplayName("Title Font Weight")] 
     public string TitleFontWeight { get; set; } 

     [DisplayName("Title Text Decoration")] 
     public string TitleTextDecoration { get; set; } 

     [DisplayName("Section Title Foreground Color")] 
     public string SectionTitleForegroundColor { get; set; } 

     [DisplayName("Section Title Background Color")] 
     public string SectionTitleBackgroundColor { get; set; } 

     [DisplayName("Section Title Font Family")] 
     public string SectionTitleFontFamily { get; set; } 

     [DisplayName("Section Title Font Size")] 
     public string SectionTitleFontSize { get; set; } 

     [DisplayName("Section Title Font Styled")] 
     public string SectionTitleFontStyle { get; set; } 

     [DisplayName("Section Title Font Weight")] 
     public string SectionTitleFontWeight { get; set; } 

     [DisplayName("Section Title Text Decoration")] 
     public string SectionTitleTextDecoration { get; set; } 

     [DisplayName("Paragraph Foreground Color")] 
     public string ParagraphForegroundColor { get; set; } 

     [DisplayName("Paragraph Background Color")] 
     public string ParagraphBackgroundColor { get; set; } 

     [DisplayName("Paragraph Font Family")] 
     public string ParagraphFontFamily { get; set; } 

     [DisplayName("Paragraph Font Size")] 
     public string ParagraphFontSize { get; set; } 

     [DisplayName("Paragraph Font Style")] 
     public string ParagraphFontStyle { get; set; } 

     [DisplayName("Paragraph Font Weight")] 
     public string ParagraphFontWeight { get; set; } 

     [DisplayName("Paragraph Text Decoration")] 
     public string ParagraphTextDecoration { get; set; } 

     [DisplayName("Logo")] 
     public byte[] Logo { get; set; } 

    } 

回答

6

ForeignKey属性对外国键属性和导航属性。它没有定义相关表的属性!所以,你必须使用:

public class Document 
{ 
    public int Id { get; set; } 
    [ForeignKey("Id")] 
    public DocumentStyle DocumentStyle { get; set; } 
} 

如果Document取决于实体或:

public class DocumentStyle 
{ 
    public int DocumentId { get; set; } 
    [ForeignKey("DocumentId")] // Should not be needed 
    public Document Document { get; set; } 
} 

如果DocumentStyle依赖

+0

大。我错了。它做了诡计。我通过了这个错误。不过,我现在得到这个。 “多重性在'Document_DocumentStyle'关系中的'Document_DocumentStyle_Source'中无效,因为从属角色是指关键属性,所以从属角色的多重性的上限必须为1” – Omar 2011-05-13 16:57:23

+0

显示您的实体或流利的映射。这看起来像你试图在不可能的情况下定义一个可选的方面。 – 2011-05-13 17:03:47

+1

ForeignKey属性必须仅用于定义外键的关系的一侧。我猜'Document'在你的模型中是主体,所以从'DocumentStyle'属性中删除属性。 – 2011-05-13 17:19:31

相关问题