相关疑难解决方法(0)

实体框架Include()不起作用

我有以下EF查询:

TestEntities db = new TestEntities();
var questions = from q in db.Questions.Include("QuestionType")
                from sq in db.SurveyQuestions
                where sq.Survey == surveyTypeID
                orderby sq.Order
                select q;

foreach( var question in questions ) {
    // ERROR: Null Reference Exception
    Console.WriteLine("Question Type: " + question.QuestionType.Description);
}
Run Code Online (Sandbox Code Playgroud)

当我访问QuestionType属性时,我得到一个空引用异常.我正在使用Include("QuestionType"),但它似乎不起作用.我究竟做错了什么?

编辑:当我启用了延迟加载时,它不会抛出空引用异常.

编辑:当我执行以下操作时,Include()似乎正在工作:

var questions = db.Questions.Include("QuestionType").Select(q => q);
Run Code Online (Sandbox Code Playgroud)

当我在一个单独的实体上进行谓词时,Include似乎失败了.使用Include时是不允许的?我的查询怎么样导致这个东西不起作用?

c# entity-framework entity-framework-4

45
推荐指数
4
解决办法
5万
查看次数

字符串PK/FK关系的实体框架代码首次大小写敏感性

我有一个相当简单的复合一对多关系,使用POCO/Fluent API定义,其中一列是一个字符串.

我发现我们数据库中这一栏中的数据在案例方面是不一致的,即'abb','ABB' - 这是我们的主要ERP系统,并且由各种来源提供,这些来源主要是我们无法控制的.

这在加入相关表时首先使用EF代码时出现问题,因为当PK/FK的情况不同时,即使SQL Profiler显示正在执行的SQL和返回的结果,EF也会默认忽略该连接.

我正在使用WCF,因此关闭了延迟加载和代理创建,并且急于使用Include加载所需的相关实体.例如.

var member = context.Member.Include(m => m.Audits).First(m => m.Id == id); 
Run Code Online (Sandbox Code Playgroud)

除了修改数据库模式之外,还有其他解决方案吗?

fluent-interface code-first ef-code-first entity-framework-4.1

9
推荐指数
1
解决办法
2139
查看次数

实体框架varchar外键不区分大小写

几年前,人们提出了以下问题:实体框架nvarchar外键上的案例敏感性.

简而言之,答案是:EF使用CLR来比较延迟加载的关联的键,并始终以区分大小写的方式执行此操作,即使数据库设置为不区分大小写的排序规则.

不幸的是,我目前参与的项目大量使用VARCHAR主键列.数据库排序规则不区分大小写.

修复数据库设计实际上不是一个选项,除了可能在主键列上设置CS排序规则(但这可能会破坏客户端应用程序).

所以我的问题是双重的:

  1. 现在,Entity Framework是否提供某种指令或设置,以指示它进行不区分大小写的比较?
  2. 如果没有,是否可以使用触发器自动更改外键以匹配主键的外壳?或者你能想到其他任何解决方法吗?

BTW:SQL Server 2008 R2和实体框架版本6.

c# sql-server entity-framework entity-framework-6

8
推荐指数
1
解决办法
1584
查看次数