我可以使用局部类来创建指向由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从数据库中提取不仅仅是那些匹配的值。随着天真属性实现(即简单地重新命名它引用的基本关系属性,实际上),你将被迫首先获得所有实体,然后做过滤在应用程序中。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top