重命名LINQ 2 SQL实体属性通过部分课程
-
09-09-2019 - |
题
我可以使用局部类来创建指向由L2S设计师生成的关联性等特性。另外,我将能够使用新的财产在查询?
我怎样才能做到这一点?
解决方案
是可以,但必须应用的相同的属性LINQ2SQL生成的属性即
[Association(Name="Test_TestData", Storage="_TestDatas", ThisKey="SomeId", OtherKey="OtherId")]
public System.Data.Linq.EntitySet<TestData> MyTestDatas
{
get
{
return this.TestDatas;
}
}
TestDatas是原始关系。
<强>更新:一种示例查询我跑:
var context = new DataClasses1DataContext();
var tests =
from d in context.Tests
where d.MyTestDatas.Any(md=>md.MyId == 2)
select new
{
SomeId = d.SomeId,
SomeData = d.SomeData,
Tests = d.MyTestDatas
};
foreach (var test in tests)
{
var data = test.Tests.ToList();
}
其他提示
如果您只是想给一个不同的名称的关联属性,只是使用的属性页的关联和重命名父和/或子属性。将在类改变的EntityRef / EntitySet的名称。
修改:在部分班级使用一个单独的属性的缺点是,LINQ将无法生成查询时使用它 - 本质上,你将被迫总是实体之前,你可以使用对象的相关属性。通过重命名你让LINQ到构建这可能会导致一个更高效的查询查询中使用的相关属性。例如,如果你想获得其中相关实体具有特定属性值的实体,用属性来修饰实体将让LINQ生成的SQL从数据库中提取不仅仅是那些匹配的值。随着天真属性实现(即简单地重新命名它引用的基本关系属性,实际上),你将被迫首先获得所有实体,然后做过滤在应用程序中。
不隶属于 StackOverflow