c# - 添加Cascade Delete后无法生成SSDL

标签 c# entity-framework entity-framework-6

我正在尝试(与设计师一起)模拟这种情况: 我有一个Client(抽象)和两个派生实体:PrivatePublic。 此外,我还有一个Addresses 和一个Orders 实体。 私有(private) 1 个“永久地址”属性,公共(public) 1 个“注册地址”属性。 我这样建模:

Private(0..1)->(1)Addresses and Public(0..1)->(1)Addresses

现在,每个 客户可以有更多 订单。 1 订单送货地址:

Client(1)->(*)Orders
Orders(0..1)->(1)Addresses

所有地址都定义为导航属性。

如果我现在构建模型,它可以工作,但是当我从上下文中删除客户端时,地址表中的地址仍然存在。 所以我尝试为地址实体的每个连接添加一个 END1 级联删除。

在构建时,我在地址相关实体之间引用连接时遇到此错误:

The SSDL generated by the activity called 'CsdlToSsdlAndMslActivity' is not valid and has the following errors:
End '{0}' on relationship '{1}' cannot have operation specified since its multiplicity is '*'. Operations cannot be specified on ends with multiplicity '*'.

怎么了?

最佳答案

当聚合实体被删除时,您不能级联删除。确保将 Cascade 放在正确的一端,即 代表父/拥有 实体的一端。

在您的情况下,我会尝试将 Cascade 放在 End2 上。

关于c# - 添加Cascade Delete后无法生成SSDL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24034150/

相关文章:

c# - WCF 和 Entity Framework 和 SQL Server - "The underlying provider failed on Open"

c# - 无法确定类型为 "System.Data.Sqlite.SqliteFactory"的提供程序工厂的提供程序名称

c# - 如何使用SCOM SDK将性能数据插入DW数据库?

c# - 为什么 dropdownlist 在重新加载时再次添加项目?(asp.net c#)

c# - 使用 LINQ 避免 ObjectDisposedException (LINQ2SQL)

c# - ObservableCollection 优于 ObjectSet

c# - 将新测试项目的测试引入解决方案时,MSTest 单元测试适配器无法连接到数据源

c# - 在 DataAnnotations 中使用当前年份作为范围验证

entity-framework - 在 Entity Framework 中,为什么延迟加载不适用于一对零或一导航属性?

c# - 具有代码优先迁移的 Entity Framework 多个项目