作为我们代码生成过程的一部分,我正在以编程方式创建一个 edmx 文件,我想知道当您“从数据库更新模型”时,设计师是如何决定使用“1”或“0..1”来建立关系的。对此有何见解?谢谢
编辑:
好的,我认为当“多”端是可为空的外键时,它使用“0..1”,如果它不可为空,则使用“1”。谁能证实这一点?
作为我们代码生成过程的一部分,我正在以编程方式创建一个 edmx 文件,我想知道当您“从数据库更新模型”时,设计师是如何决定使用“1”或“0..1”来建立关系的。对此有何见解?谢谢
编辑:
好的,我认为当“多”端是可为空的外键时,它使用“0..1”,如果它不可为空,则使用“1”。谁能证实这一点?
是的,为父关系角色设置“0..1”或“1”取决于该列是否可以为空。
不要忘记,如果关系建立在两个表(1 到 1 关联)的部分主键列上,则基数将为 1(父)到 0..1(子)。
如果您正在开发新的 edmx 生成工具,我们建议您尽可能多地进行实验和分析。我们开发了一个设计时工具,用于生成和编辑实体框架和 LINQ to SQL 模型,并为我们的客户进一步生成 Oracle、MySQL、PostgreSQL、SQL Server 和 SQLite 的代码。SQL Server 没有问题,因为 Entity Framework 最初是在它之上开发的,但其他数据库显示了一些困难。甚至有一种印象,例如 Oracle 数据库的某些特性根本没有考虑到。
你的编辑是正确的。EF 根据字段是否可为空来检测它。