我最近得到一个“接口成员的映射…..不支持”错误,我根据
this thread解决了.要演示:
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.Equals(value)替换x.valueText ==值,这完全符合预期.
我已经在我的代码中解决了这个问题,但是我想明白为什么这样做.有人可以解释吗
更新:根据我以下的评论,LINQ to sql团队关闭了这个“不会修复”.我认为这意味着它现在被认为是一个已知的错误,但一个不会很快解决的bug.但是,我仍然想知道为什么它的行为不同,但是.