我是实体框架的新手,并且是那个mather的ORM。在我参与的项目中,我们有一个遗留数据库,它的所有键都是字符串,不区分大小写。
我们正在转换为 MSSQL 并希望将 EF 用作 ORM,但遇到了问题。
这是一个说明我们的问题的例子:
TableA 有一个主字符串键,TableB 有一个对该主键的引用。
在 LINQ 中,我们编写如下内容:
var result = from t in context.TableB select t.TableA;
foreach( var r in result )
Console.WriteLine( r.someFieldInTableA );
如果 TableA 包含读取“A”的主键,并且 TableB 包含引用 TableA 但在引用字段“a”和“A”中具有不同大小写的两行。
在我们的项目中,我们希望两行都出现在结果中,但只有匹配大小写的行才会出现在结果中。
使用 SQL Profiler,我注意到两行都被选中。
有没有办法告诉实体框架键不区分大小写?
编辑:
我们现在已经用 NHibernate 对此进行了测试,并得出结论 NHibernate 可以使用不区分大小写的键。所以 NHibernate 对我们来说可能是一个更好的选择。
然而,我仍然有兴趣找出是否有任何方法可以改变实体框架的行为。
感谢您的回答!
问题是,如果我们现在将该约束添加到数据库,遗留应用程序可能会因为它的构建方式而停止工作。如果可能的话,对我们来说最好的办法是改变 EF 的行为。我猜这是不可能的,但我正在试一试。
问候,
弗雷德里克
编辑:我为自己的问题添加答案的原因是我在成为注册用户之前添加了这个问题,并且当我注册了我的帐户时,我无法添加评论或编辑我的帖子。现在帐户已合并。