一对一的关系,不同的键列名,实体框架,Code First方法

时间:2011-05-13 16:01:00

标签: c# ef-code-first entity-framework-4.1

我有两个已经创建的表。 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'。名称值   应该是逗号分隔的列表   外键属性名称。

这是Document model类

的代码的一部分
[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; }

    }

1 个答案:

答案 0 :(得分: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依赖

相关问题