Entity framework 外键的Id设置为0
我有一个DB First Entity Framework设置,客户的表地址外键为空。 客户模型的定义如下:Entity framework 外键的Id设置为0,entity-framework,foreign-keys,Entity Framework,Foreign Keys,我有一个DB First Entity Framework设置,客户的表地址外键为空。 客户模型的定义如下: public class Customer { [DataMember] public int Id { get; set; } [DataMember] public int? AddressId { get; set; } // same name as foreign key field on db [DataMember] pu
public class Customer
{
[DataMember]
public int Id { get; set; }
[DataMember]
public int? AddressId { get; set; } // same name as foreign key field on db
[DataMember]
public Address Address { get; set; }
}
当我从db加载具有关联地址的客户时:
Customer getCustomerById(int id) {
return _db.Customers.Include("Address").SingleOrDefault(c => c.Id == id);
}
我使用设置的相关地址获取客户
,并用正确的字段填充,但是客户.AddressId
和客户.Address.Id
设置为0
,而在db中,记录类似于:
Id | AddressId
----------------
12 | 3288
为什么会这样?我在网上找不到任何关于这方面的信息,只有一个警告,关于“急切加载”不能使用Include
s,但在Customer中,还有其他字段(不可为空)以与加载正确Id相同的方式包含
谢谢你抽出时间。谢谢你,史蒂夫。您的链接似乎不好:您是否指出了需要重新发布的特定资源,或者我可以用谷歌搜索“how to log SQL”并就此结束对否则,这里是另一个尝试。地址
类是什么样子的?地图画得好吗?看起来是这样。id字段标记为键,并按照SQL Server标准大写:[DataContract(IsReference=true)]公共类地址{[DataMember][key]public int id{get;set;}…
。此外,所有地址
字段(id本身除外)都从数据库中正确加载。