没有外键的实体框架代码第一关系

时间:2016-08-01 14:25:45

标签: entity-framework code-first

我是ORM工具的新手,我想只使用命名约定在表之间建立关系。例如,如果我有类似下面的类;

public class City
{
    public int Id;
    public string Name;
}

public class District 
{
    public int Id;
    public string Name;
    public City City;
}

我想像这样在我的数据库中映射这些类。

City
   Id int,
   Name nvarchar(100)

District
   Id int,
   Name nvarchar(100),
   CityId int

我不想使用外键,当我将任何类作为属性放在另一个类中时,我想将这些属性迁移为“ClassNameId”。对此有何解决方案?

1 个答案:

答案 0 :(得分:0)

使用EF时,您的关系设计不正确。

正确的关系是

public class City
{
    public int Id;
    public string Name;

    public virtual ICollection<District> Districts;
}

public class District 
{
    public int Id;
    public string Name;
    public int CityId;
    public virtual City City;
}

并且在实体配置中,您需要在EntityTypeConfiguration上进行城市定义:

  public DistrictConfiguration()
        {
            HasKey(a => a.Id);

            HasRequired(a => a.City)
                .WithMany(a => a.Districts)
                .HasForeignKey(a => a.CityId);


             ToTable("District");
        }