我最近收到“不支持接口成员的映射.....”错误,我根据这个线程解决了这个错误。展示:
public interface IMyInterface { string valueText { get; set; } }
public class MyData : IMyInterface
{
int ID { get; set;}
string valueText { get; set;}
}
public class MyOtherData : IMyInterface
{
long ID { get; set;}
string valueText { get; set;}
}
和
public static IEnumerable<T> GetByValue<T>(string value) : where T : class, IMyInterface, new()
{
using (var context = new DataContext())
{
// The important line
return context.GetTable<T>().Where(x => x.valueText == value);
}
}
运行此代码,我会得到一个 NotSupportedException:“不支持接口成员 IMyInterface.valueText 的映射”。但是,如果我将 替换为x.valueText == value
,x.valueText.Equals(value)
这将完全按预期工作。
我已经在我的代码中解决了这个问题,但我想了解它为什么会这样。谁能解释一下?
更新:根据我下面的评论,LINQ to SQL 团队将其关闭为“不会修复”。我认为这意味着它现在算作一个已知错误,但不会很快得到解决。不过,我仍然想知道为什么它的行为首先会有所不同。