So ordnen Sie Spalten-und entity-Anwesen von unterschiedlichen Datentypen in entity framework code first

Bin ich mit Entity Framework 5 - Code-first.

Ich habe eine Datenbank, die ich am Anschluss an, der bereits seit einiger Zeit (ich wusste nicht, erstellen Sie Sie). Es gibt eine Tabelle namens T_Customers. Es enthält eine Liste mit allen Kunden. Es hat die folgende Struktur (nur teilweise dargestellt):

Customer_id | numeric (5, 0) | auto increment | not null (not set as primary key)
FName | varchar(50) | not null
LName | varchar(50) | not null

Meine Customer Klasse:

public class Customer : IEntity
{
     public int Id { get; set; }

     public string FirstName { get; set; }

     public string LastName { get; set; }
}

Meine IEntity Schnittstelle:

public interface IEntity
{
     int Id { get; set; }
}

Habe ich Folgendes in meiner Datenbank Kontext-Klasse:

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>();
     }
}

Mein Kunde configuration-Klasse:

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");
     }
}

Ich versuche konsequent zu sein in meiner entity-Deklarationen, muss ich alle IDs auf ganze zahlen. Diese Kunden-ID wird der Typ numeric in der Datenbank, und jetzt bin ich in Probleme laufen, wenn Sie versuchen, um return eine Liste mit allen Kunden. Wie kann ich die Karte aus einer Datenbank numerischen Typ in einen C# - integer-Typ? Ich bin nicht die änderung meiner Klasse, die ID auf null-Werte zulässt oder dezimal, meine IDs sind immer nicht-null-Werte zulässt und integer. Ich kann auch nicht die Datenbank ändern.

Den Fehler, bin ich immer:

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'.
InformationsquelleAutor Brendan Vogt | 2013-02-11
Schreibe einen Kommentar