小编Jam*_*zer的帖子

Visual Studio 2012使用csla和实体框架进行测试

在VS2010中,我的MSTest测试运行得很好.

在VS2012中运行时出现错误.该测试使用自定义业务主体设置Csla.ApplicationContext.User.当要求EntityFramework提供新的ObjectContext时,我收到一个SerializationException,指出无法找到我的自定义业务主体类型.

在运行VS2012的测试运行器或Resharper7的测试运行器时,使用EntityFramework的所有测试都会失败.我试过NCrunch的测试跑步者,他们都通过了.

我该如何解决这个问题?

c# csla mstest entity-framework-4.3 visual-studio-2012

14
推荐指数
1
解决办法
1033
查看次数

实体框架和强制内部联接

我有Table1与以下关系(他们没有强制执行,他们只创建导航属性的关系)

Table1 (*)->(1) Table2
Table1 (*)->(1) Table3
Table1 (*)->(1) Table4
Table1 (*)->(1) Table5

使用急切的加载代码看起来像

IQueryable<Table1> query = context.Table1s;

query = query.Include(Table1 => Table1.Table2);
query = query.Include(Table1 => Table1.Table3);
query = query.Include(Table1 => Table1.Table4);
query = query.Include(Table1 => Table1.Table5);

query = query.Where(row => row.Table1Id == table1Id);

query.Single();
Run Code Online (Sandbox Code Playgroud)

我尝试组织Include()语句的每一种方式,包含的第一个表在其生成的TSQL中都有一个Inner Join,剩下的就是Left Outer Join(我希望所有这些都是Left Outer).我不是实体分裂,它们只是FK的普通表.

如果DefaultIfEmpty()是唯一的解决方案,有人可以解释除了包含的第一个表之外的所有表都提供预期的SQL的原因吗?

我的理解是导航属性的默认行为是LEFT OUTER但我无法获得所有属性来生成默认值.

任何帮助将非常感激.

先感谢您!

-----创建TSQL(为简洁而修改但结构相同)-------

(@p__linq__0 int)SELECT 
[Limit1].[Table1Id] AS [Table1Id], 
[Limit1].[OtherData] AS [OtherData]
FROM ( SELECT TOP (2) 
    [Extent1].[Table1Id] AS [Table1Id], 
    [Extent1].[OtherData] As [OtherData] …

linq-to-entities c#-4.0 entity-framework-4.1

11
推荐指数
2
解决办法
1万
查看次数