如果我有两个代码优先实体:
用户:
public class User
{
public User() {}
[Key]
public int Id {get; set;}
public string Name {get; set;}
public string City {get; set;}
}
城市:
public class City
{
public City() {}
[Key]
public string Name {get; set;}
}
如何建立外键关系以使User表具有City_Name
FK,其中包含一个必须与City表中的某个Name对应的字符串?我不需要另一个方向的参考,我只想确保City_Name
中的dbo.Users
来自Name
中的dbo.Cities
列
如果我只使用这样的模型进行迁移,它会在City_Name
中创建dbo.Users
列,并且插入工作正常,但如果我想返回User
obj, City
始终为null
,即使我使用dbContext.Entry(user).Reference(u => u.City).Load()
手动加载城市。
我可能做错的任何想法或见解,以及在EF中如何实现这种关系?
答案 0 :(得分:0)
像这样:
public class User
{
[Key]
public int Id {get; set;}
public string Name {get; set;}
[ForeignKey("CityMappedToUser")]
public string City_Name {get; set;}
public virtual City CityMappedToUser{get; set;}
}
它在msdn tbh:https://msdn.microsoft.com/en-us/data/jj713564.aspx
上解释得非常好答案 1 :(得分:0)
看起来你需要这样的东西:
public class User
{
public User() {}
[Key]
public int Id {get; set;}
public string Name {get; set;}
public string City_Name {get; set;}
[ForeignKey("City_Name")]
public virtual City City { get; set; }
}
public class City
{
public City() {}
[Key]
public string Name {get; set;}
}