4

最初に EF5 コードを使用してデータベース スキーマを生成していますが、テーブル内で新しいナビゲーション プロパティの名前が不適切な方法で付けられています。これが私が扱っているモデルです。

public class User
{
    [Key]
    public long UserId { get; set; }
    ...

    **public virtual ICollection<ImagePermission> KeepThisNavigationName { get; set; }**
}

ただし、データベースを更新してテーブルの列を調べた後、列の名前は次のようになります。

dbo.ImagePermission.User_UserId

そして、私はそれを名付けたいと思います

dbo.ImagePermission.KeepThisNavigationName_UserId

Fluent API を使用してこれを行う方法があると思いますが、何度も試行に失敗した後、目的の結果を得ることができません。

Ps 'ImagePermission' エンティティは現在まだ開発中です。そのため、列名を更新するコードを追加するよりも、テーブルの作成中にこの列名を正しく作成できるように、このテーブルを作成する移行を削除することをお勧めします。

どうもありがとう、 オリバー

4

1 に答える 1

4

Fluent API での正しいマッピングは次のようになります。

modelBuilder.Entity<User>()
    .HasMany(u => u.KeepThisNavigationName)
    .WithOptional() // or WithRequired()
    .Map(m => m.MapKey("KeepThisNavigationName_UserId"));

ImagePermissionを参照するナビゲーション プロパティがある場合は、パラメーターなしのバージョンの代わりに(または)Userを使用する必要があります。WithOptional(i => i.User)WithRequired(i => i.User)

于 2013-06-01T18:06:32.110 に答える