【发布时间】:2010-10-17 20:06:00
【问题描述】:
我是实体框架的新手,而我是那个数学的 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 的行为。 我猜这是不可能的,但我正在试一试。
问候,
弗雷德里克
编辑:我之所以添加对自己问题的答案是因为我在注册用户之前添加了这个问题,而当我注册了我的帐户时,我无法添加 cmets 或编辑我的帖子。现在帐户已合并。
【问题讨论】:
标签: entity-framework primary-key case-insensitive natural-key