实体框架如何判断是否有多个“一”? 或“零或一” 应该用在关系上吗?

发布于 2024-07-25 19:25:29 字数 189 浏览 14 评论 0原文

我正在以编程方式创建 edmx 文件作为代码生成过程的一部分,我想知道当您“从数据库更新模型”时,设计者如何决定使用“1”或“0..1”来建立关系。 对此有何见解? 谢谢

编辑:

好的,我认为当“多”端是可为空的外键时它使用“0..1”,如果它不可为空则使用“1”。 谁能证实这一点吗?

I'm programmatically creating an edmx file as part of our code generation process and I'd like to know how the designer decides to use "1" or "0..1" for a relationship when you "Update model from database". Any insight on this? Thanks

Edit:

Ok, I think it uses "0..1" when the "many" side is a nullable foreign key and "1" if it's not nullable. Can anyone confirm this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

卖梦商人 2024-08-01 19:25:29

是的,为父关系角色设置“0..1”或“1”取决于该列是否可以为空。
不要忘记,如果关系是在两个表的部分主键列上构建的(1 到 1 关联),则基数将为 1(父级)到 0..1(子级)。

如果您正在开发新的 edmx 生成工具,我们建议您尽可能多地进行实验和分析。 我们开发了一种设计时工具,用于生成和编辑实体框架和 LINQ to SQL 模型,并为客户进一步生成 Oracle、MySQL、PostgreSQL、SQL Server 和 SQLite 的代码。 SQL Server 没有问题,因为实体框架最初是在它上开发的,但其他数据库却出现了一些困难。 甚至有一种印象是根本没有考虑到Oracle数据库的一些特性。

Yes, setting "0..1" or "1" for the Parent relation role depends upon the fact whether the column is nullable or not.
Don't forget that if the relation is built over parts of primary key columns from both tables(1 to 1 association) the cardinality will be 1 (Parent) to 0..1 (Child).

If you are developing a new edmx-generation tool, we recommend you to experiment and analyze as much as possible. We have developed a design time tool for generating and editing Entity Framework and LINQ to SQL models with further code generation for Oracle, MySQL, PostgreSQL, SQL Server and SQLite for our customers. There were no problems with SQL Server, because Entity Framework was initially developed over it, but other databases revealed some difficulties. There even was an impression that some peculiarities of Oracle database,for example, were not taken into account at all.

任谁 2024-08-01 19:25:29

你的编辑很到位。 EF 根据该字段是否可为空来检测它。

Your edit is spot on. The EF detects it based on whether or not the field is nullable.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文