私はEntityFramework5-コードを最初に使用しています。
接続しているデータベースがあり、それはすでにしばらくの間存在しています(私はそれを作成しませんでした)。と呼ばれるテーブルがありますT_Customers
。すべての顧客のリストが含まれています。次の構造になっています(部分的にのみ示されています)。
Customer_id | numeric (5, 0) | auto increment | not null (not set as primary key)
FName | varchar(50) | not null
LName | varchar(50) | not null
私Customer
のクラス:
public class Customer : IEntity
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
私のIEntity
インターフェース:
public interface IEntity
{
int Id { get; set; }
}
データベースコンテキストクラスには次のものがあります。
public class DatabaseContext : DbContext
{
public DatabaseContext(string connectionString)
: base(connectionString)
{
}
public DbSet<Customer> Customers { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(new CustomerConfiguration());
}
public new DbSet<TEntity> Set<TEntity>()
where TEntity : class, IEntity
{
return base.Set<TEntity>();
}
}
私の顧客構成クラス:
class CustomerConfiguration : EntityTypeConfiguration<Customer>
{
internal CustomerConfiguration()
{
this.ToTable("T_Customers");
this.Property(x => x.Id).HasColumnName("Customer_id");
this.Property(x => x.FirstName).HasColumnName("FName");
this.Property(x => x.LastName).HasColumnName("LName");
}
}
エンティティ宣言で一貫性を保とうとしています。すべてのIDを整数にする必要があります。この顧客IDはデータベースで数値タイプであり、すべての顧客のリストを返そうとすると問題が発生します。データベースの数値型からC#整数型にマップするにはどうすればよいですか?クラスのIDをnull許容または10進数に変更していません。私のIDは、常にnull許容ではなく整数です。また、データベースを変更することはできません。
私が得ているエラーは次のとおりです。
The 'Id' property on 'Customer' could not be set to a 'Decimal' value.
You must set this property to a non-null value of type 'Int32'.