在DataContext中查找依赖于其他实体(通过DB ForeignKeys)的实体

时间:2012-08-02 23:16:51

标签: c# sql-server entity-framework linq-to-sql

我正在编写一些非常通用的数据库代码,我想找到一种方法来查询我的实体集中的一组类型(使用LINQ to SQL EntityFramework,数据库优先),这些类型与另一个实体相关。

所以,例如,我可能有一个产品属于一个类别;

SELECT * FROM Products p INNER JOIN Categories c ON p.CategoryId = c.Id

在我的数据库中,p.CategoryId是外键约束为NON-NULL。 (即产品必须属于一个类别)。

现在,如果我尝试删除类别,我会收到错误,因为有些产品仍与类别相关,而且我没有(或想要)应用于该关系的CASCADE DELETE。

我想要做的是检查我的DataContext库,并动态确定Products按类别键入,所以如果我想从Categories中删除,我首先需要从Products中删除。

通过'动态',我的意思是我的代码不具备类型或关系的前瞻性知识(它不具体了解产品或类别实体)但我愿意使用Reflection来评估DLL来解决这些关系。

我查看了与DataContext相关的代码,并且可以看到某些实体上的EntityRef属性(这是解决问题的一半),但我似乎找不到任何方法来判断这些关系是强制性的还是可选的( ie;底层数据库中的NON-NULL或NULLABLE。

1 个答案:

答案 0 :(得分:0)

您知道可以通过将删除规则设置为“级联”来自动级联实体框架中的删除吗?这可能会使事情变得更容易(虽然不一定为LINQ to SQL提供通用解决方案)。

点击此处了解更多信息: http://msdn.microsoft.com/en-us/library/bb738695.aspx