我是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”。对此有何解决方案?
答案 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");
}