私は多対多の関係をコードファーストマッピングで囲んでいます。エンティティフレームワークと多対多リレーションシップ、中間テーブルの列名を制御する
多くの場合、Genres
(またはその逆)を持つことができるAlbum
クラスがある場合、私は中間テーブルを必要とすることを理解しており、Entity Frameworkは自動的にそれを行います。しかし、私は中間テーブルを少しコントロールしたいので、私は自分自身を作成していますが、主な理由は、行をフロントエンドから削除してデータベースに残すことができるようにすることです。その後
public class BaseObject
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Key]
public Guid Oid { get; set;
public DateTime DateCreated { get; set; }
public bool IsDeleted { get; set; }
public DateTime? DeletedDate { get; set; }
}
を私たちは持っている:私は、彼らが(私はこの記事を簡単にするために注釈やその他のコードの多くを削除した)から継承されていることをBaseObjectを作成しているすべての私のクラスのためにこれを行うには
Albums
とGenres
クラス:
public class Album : BaseObject
{
public string Name { get; set; }
public virtual List<AlbumsGenres> Albums { get; set; }
}
public class Genre : BaseObject
{
public string Name { get; set; }
public virtual List<AlbumsGenres> Genres { get; set; }
}
最後にAlbumsGenres
中級クラス:
public class AlbumsGenres : BaseObject
{
// Left blank because EF will create "Album_Oid" and "Genre_Oid" columns
// Tried the below code, but EF still created it's own Columns
/*
public Guid Album { get; set; }
public Guid Genre { get; set; }
*/
}
質問があります。 Album
のような異なる列名を使用してAlbum_Oid
を作成するようにEFに指示する方法はありますか?
簡単な説明(またはリンク)が提供されていれば、「ただ心配しないでください」という回答を受け入れることになります。
私はアルバムに「Genres」プロパティがあり、ジャンルには「Albums」があるはずです –