第一码 - 我使用实体框架5。
我有我连接到一个数据库已经存在有一段时间了(我没有创建它)。 有一种称为表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可空或小数,我的ID始终不为空的和整数。 我也不能更改数据库。
我正的错误是:
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'.