【发布时间】:2012-10-23 18:14:02
【问题描述】:
首先编写实体框架 (5) 代码,尽管我们不是从代码生成数据模型——我们只是手动保持它们同步(比听起来更痛苦)。
尝试建立 1 对 0-1 的关系。以下是使用可能有 0 或 1 个地址的客户的虚构示例进行的设置:
编辑:原始示例不正确。客户可以有 0-1 个地址,地址正好有 1 个客户。表格设计和代码均已更新。
地址 -------------- AddressId(身份) 地址文本 CustomerId (编辑:这采用了唯一约束) 顾客 -------------- 客户 ID(身份) 顾客姓名地址映射的相关部分:
this.HasKey(t => t.AddressId);
//SEE NOTE ON THIS BELOW
//this.Property(t =>t.AddressId).
HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
this.HasRequired(t => t.Customer)
.WithOptional();
客户映射的相关部分:
this.HasKey(t => t.CustomerId);
this.HasOptional(b => b.Address)
.WithRequired();
注意在 Customer 中注释掉的行。如果我包含这个,我会收到以下错误:
ReferentialConstraint 中的依赖属性映射到 商店生成的列。列:“客户 ID”。
如果我不包含它,我会得到:
无法为表“客户”中的标识列插入显式值 当 IDENTITY_INSERT 设置为 OFF 时。
我搜索了高低,上面的代码似乎是推荐的方法。我还看到一些模糊的提及,除非两个表共享同名的键,否则无法建模 1:1 关系?
这种关系可以用代码建模吗?如果可以,正确的语法是什么?
【问题讨论】:
标签: c# sql-server entity-framework entity-framework-5