【问题标题】:EF CTP4 Missing columns in generated tableEF CTP4 生成的表中缺少列
【发布时间】:2010-11-26 20:02:26
【问题描述】:

我遇到了一个我似乎无法弄清楚的问题。假设我在我的域中定义了 2 个实体;人和文件。以下是 Document 的定义:

public class Document
{
    public int Id { get; set; }

    [Required]
    [StringLength(255)]
    public string Title { get; set; }
    public DateTime Date { get; set; }

    public virtual Person Owner{ get; set; }
    public virtual Person AssignedTo { get; set; }
}

现在,当 EF CTP4 在初始化时创建 SQL 表时,只有一个字段映射到 Person.Id,即 Owner_id。无论我尝试什么,都不会创建 AssignedTo 的字段。

有什么办法可以解决这个问题?

问候,

阿维索伦

【问题讨论】:

    标签: entity-framework ctp4


    【解决方案1】:

    您的代码完美地为我在数据库中创建了所需的架构:

    如果您没有在数据库中获得此​​架构,那么我的猜测是您的对象模型的其余部分有问题。您能否发布您的完整对象模型?

    另一种解决方案:

    虽然您当前的 Document 类将为您提供所需的结果,但您仍然可以利用 Conventions for Code First 并为您的导航属性明确指定 FK:

    public class Document
    {
        public int Id { get; set; }
        [Required][StringLength(255)]
        public string Title { get; set; }
        public DateTime Date { get; set; }
    
        public int OwnerID { get; set; }
        public int AssignedToID { get; set; }
    
        public virtual Person Owner { get; set; }
        public virtual Person AssignedTo { get; set; }
    
    }
    

    Code First 现在将推断出任何名为 的属性(例如 OwnerID),与主键 (int) 具有相同的数据类型,代表一个关系的外键。

    这基本上会产生相同的数据库架构,加上您在 Document 对象上拥有 FK 以及导航属性,这为您提供了使用模型的最大灵活性。

    【讨论】:

    • 感谢您的回复,我会尝试您提供的解决方案并发布任何反馈;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多