gpt4 book ai didi

entity-framework-4.1 - Entity Framework 代码对字符串PK/FK关系的首字母敏感性

转载 作者:行者123 更新时间:2023-12-04 04:35:56 26 4
gpt4 key购买 nike

我有一个使用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); 

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

最佳答案

EF不敏感联接比较

嗨,我遇到了同样的问题(虽然不是先有机智的代码,但有生成的模型)

原因是EF对键字段进行了区分大小写的比较,并且没有找到相关的对象。

我猜问题出在“EDM关系管理器”中,也许有可能改写此行为。

我发现了一个简单的解决方法:降低 shell 的相关属性:

    [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
[DataMemberAttribute()]
public global::System.String id
{
get
{
return _id.ToLower(); // **<- here**
}
set
{
if (_id != value)
{
OnidChanging(value);
ReportPropertyChanging("id");
_id = StructuralObject.SetValidValue(value, false);
ReportPropertyChanged("id");
OnidChanged();
}
}
}
private global::System.String _id;
partial void OnidChanging(global::System.String value);
partial void OnidChanged();

它确实有效,但是,当然,这是一个la脚的工作难题。
我坚持一段时间,直到我(或某人)提出了一个更好的解决方案。

祝你好运!

关于entity-framework-4.1 - Entity Framework 代码对字符串PK/FK关系的首字母敏感性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7421919/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com