モデル:
public class User
{
public int Id {get; set;}
public int SomeProperty {get; set;}
public virtual Group Group { get; set; }
}
public class Group {
{
public int Id {get; set;}
// other properties
}
この linq クエリを実行します。
myContext.Users.Where(u => u.SomeProperty = 4);
次の sql クエリが生成されます。
select
extent1.Id as Id
extent1.SomeProperty as SomeProperty
extent1.Group_Id as Group_Id
from
dbo.Users as extent1
他のプロパティで行ったように、関連列をキャメルケースにしないことにしたのは奇妙です。これには何らかの理由がありますか?
いずれにせよ、マッピング コードを追加して修正を試みました。
var entity = modelBuilder.Entity<User>();
entity.HasRequired( a => a.Group )
.WithRequiredDependent()
.Map( a => a.MapKey( "GroupId" ) );
残念ながら、linq でクエリを実行すると、次のクエリが生成されます。
select
extent1.Id as Id
extent1.SomeProperty as SomeProperty
extent1.GroupId as GroupId
extent1.Group_Id as Group_Id
from
dbo.Users as extent1
見た目は少し良くなりましたが、テーブルには Group_Id ではなく GroupId という列があるため、明らかにまだ機能していません。ここで何が起こっているのか、またはそれを修正する方法を知っている人はいますか?