1

私はモデルとマッピングを2つの異なるファイルに持っています.マッピングクラスでこれを行います:

public class UserEmailMap : EntityTypeConfiguration<UserEmail> {
    HasKey(t => new { t.UserId, t.EmailId });

    Property(t => t.UserId)
        .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);

    Property(t => t.EmailId)
        .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);

    ToTable("UsersEmails");

    Property(t => t.UserId).HasColumnName("UserId");
    Property(t => t.EmailId).HasColumnName("EmailId");
    Property(t => t.IsPrimary).HasColumnName("IsPrimary");

    HasRequired(t => t.Email)
        .WithMany(t => t.UserEmails)
        .HasForeignKey(d => d.EmailId);
    HasRequired(t => t.User)
        .WithMany(t => t.UserEmails)
        .HasForeignKey(d => d.UserId);
}

現在、ビジュアルスタジオはこれらの行について不平を言っています:

Property(t => t.UserId)
    .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);

Property(t => t.EmailId)
    .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);

両方に下線を引くDatabaseGeneratedOption.None

このメッセージで: Argument type 'System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption' is not assignable to parameter type 'System.Nullable<System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption>'

そして、私はこれを試しました:

Nullable<DatabaseGeneratedOption> x1 = DatabaseGeneratedOption.None;
DatabaseGeneratedOption? x2 = DatabaseGeneratedOption.None;

Property(t => t.UserId)
    .HasDatabaseGeneratedOption(x1);

Property(t => t.EmailId)
    .HasDatabaseGeneratedOption(x2);

そして、ここに予期しない部分があります:

Argument type 'System.Nullable<System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption> [mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]' is not assignable to parameter type 'System.Nullable<System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption> [mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]'

x1と の同じメッセージx2

これはコンパイラ エラーを引き起こしませんが、それでもこれを修正したいと思います。何かご意見は?

4

1 に答える 1

2

キャストを追加してこの問題を修正しました

Property(x => x.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.None
              as System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption?);

きれいではありませんが、Visual Studio は不平を言うのをやめました。

于 2015-11-10T17:09:45.060 に答える