EF6,Code First Migration - 不创建外键

时间:2014-01-15 17:34:11

标签: entity-framework foreign-keys ef-migrations

我首先创建了以下类并更新到数据库,已经创建了表。

public class Region
{
   public int RegionId { get; set; }
   public string RegionName { get; set; }
}

public class Zone
{
    public int ZoneId { get; set; }
    public string ZoneName { get; set; }
}

我需要将外键插入表区域后:

public class Zone
 {
    public int ZoneId { get; set; }
    public string ZoneName { get; set; }

    public virtual Region Region { get; set; }
}

尝试:添加迁移区域和更新数据库..它不更新数据库。 Add-Migration正在创建具有空属性的类Up()&下()。 还尝试添加[ForeignKey(“RegionId”)]但没有成功。 我做错了什么?

编辑: 这是最后一个正在运行的版本:

public class Region
{
   public int RegionId { get; set; }
   public string RegionName { get; set; } 
}
public class Zone
{
    public int ZoneId { get; set; }
    public string ZoneName { get; set; }
    public int  RegionId { get; set; }
    public virtual Region Region { get; set; }
}

此外,我有两个上下文,并在此处找到解决方案( Brice的回答) - EF 4.3 Auto-Migrations with multiple DbContexts in one database

1 个答案:

答案 0 :(得分:1)

使用现有数据库学习“Code First”的最佳方法是使用EF Power Tools。

和“逆向工程师”。

http://visualstudiogallery.msdn.microsoft.com/72a60b14-1581-4b9b-89f2-846072eff19d

我在30分钟内了解了有关Mapping如何使用此工具的更多信息,然后我在Google上进行了数小时的Google搜索。

基本上,创建一个“类库”,当安装此插件时,您将获得一个新的上下文菜单(在项目中),这将允许您对数据库进行反向工程...

我喜欢这个工具。

话虽如此,我通常会在子对象上看到FK标量(父对象)。

public class Zone
 {
    public int ZoneId { get; set; }
    public string ZoneName { get; set; }

    public int RegionID { get; set; }
    public virtual Region Region { get; set; }
}

但更基本的问题是你如何做你的映射?