如何防止EF尝试在我的模型上映射方法?

Tra*_*rde 2 linq-to-entities entity-framework entity-framework-4.1

所以,我有一个具有普通属性的"Speaker"类,以及一个像这样的普通旧方法:

public string FullNameFirstLast()
{
    return FirstName + " " + LastName;
}
Run Code Online (Sandbox Code Playgroud)

我正在使用Entity Framework Code First Magic Unicorn版,我收到此错误:

System.NotSupportedException:LINQ to Entities无法识别方法'System.String FullNameFirstLast()'方法,并且此方法无法转换为商店表达式.

这看起来很奇怪,因为它是一种方法,而不是属性,所以我想知道为什么EF会关心它...所以我试着告诉EF忽略它:

    modelBuilder.Entity<Speaker>()
        .Ignore(ignore => ignore.FullNameFirstLast())
        ;
Run Code Online (Sandbox Code Playgroud)

这没有用,因为现在我收到此错误消息:

System.InvalidOperationException:表达式'ignore => ignore.FullNameFirstLast()'不是有效的属性表达式.表达式应该表示一个属性:C#:'t => t.MyProperty'VB.Net:'Punction(t)t.MyProperty'.

我该怎么做呢?我假设我的模型对象上有EF方法,对吧?

Lad*_*nka 5

这不是映射问题.在Linq-to-entities查询中使用该方法的问题.您不能在Linq-to-entities查询中使用自定义方法或自定义属性,因为EF提供程序不知道如何将它们转换为SQL.