2011-09-26 24 views
5

Verilerimi (MySQL ile) yönetmek için önce Microsoft Entity Framework kodunu kullanarak kodu kullanıyorum. Bir POCO nesnesi tanımladım, ancak veri eklemeyi denediğimde tablonun Kullanıcılar var olmadığını söylüyor. DB'ye baktım ve kullanıcı değil Kullanıcı Tablosu yarattı. Bunu nasıl giderebilirim? Beni delirtiyor!Varlık Çerçeve Kodu İlk MySql Çoğullama Tabloları

Teşekkürler!

public class User 
{ 
    [Key,Required] 
    public int UserId { get; set; } 

    [StringLength(20), Required] 
    public string UserName { get; set; } 

    [StringLength(30), Required] 
    public string Password { get; set; } 

    [StringLength(100), Required] 
    public string EmailAddress { get; set; } 

    [Required] 
    public DateTime CreateDate { get; set; } 

    [Required] 
    public bool IsActive { get; set; } 
} 
+0

kullanıyorsunuz ne konnektör ve sürümü (... MySQL ile denemedim)? Bu seviyede gelmek gibi görünüyor ... – gordatron

+0

Hey mysql bağlayıcı net 6.3.7 –

+0

rağmen yanlış olabilir. Ayrıca [1] [class] (Tablo) ("Kullanıcı")] eklemek değil, ancak daha fazla –

cevap

3

Henüz MySQL'i EF ile kullanmamıştım, ancak çözümün kendileri için bir sorun olmadığını düşünüyorum. Çoğul Tablo Düzeni'ni kapatmanız gerekiyor.

using System.Data.Entity; 
using System.Data.Entity.ModelConfiguration.Conventions.Edm.Db; 

public class MyDbContext: DbContext 
{ 
    protected override void OnModelCreating(ModelBuilder modelBuilder) 
    {  
     modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); 
    } 
} 

Şimdi EF, nesne adınızın değişmezini tablo adına arar.

Bazı harika video eğitimleri Sürekli Öğrenme Varlık Çerçevesi altında http://msdn.microsoft.com/en-us/data/aa937723 adresindedir. Ek öğrenme deneyimi için, yukarıdakileri belirtemezsiniz, daha ziyade 'kullanıcı' nesnesini 'kullanıcı' tablosuna açıkça eşleştiremezsiniz.

Ek Referanslar: http://blogs.msdn.com/b/adonet/archive/2010/12/14/ef-feature-ctp5-fluent-api-samples.aspx

+0

Teşekkürler! Net bir açıklama ve bağlantı olduğu için sana vermeliyim! Tekrar teşekkürler –

2

Tablonun adını söyleyerek sınıfına bir öznitelik koyabilirsiniz:

[Table("Users")] 
public class User 
{ 
    //... 
} 

... ya da akıcı API kullanabilirsiniz. Bunu yapmak için DbContext sınıfınızdaki OnModelCreating yöntemini geçersiz kılabilirsiniz.

public class MyDbContext : DbContext 
{ 
    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     modelBuilder.Entity<User>().Map(t => t.ToTable("Users")); 
    } 
} 

EF'in gelecekteki sürümlerinde, kendi sözleşmelerimizi yazabilme vaadinde bulunduk. Thats değil orada henüz sürümü 4.1 ... itibariyle

4
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Data.Entity; 
using System.Data.Entity.ModelConfiguration.Conventions; 

namespace YourNamespace 
{ 
    public class DataContext : DbContext 
    { 
     protected override void OnModelCreating(DbModelBuilder dbModelBuilder) 
     { 
      dbModelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); 
     } 

     public DbSet<User> User { get; set; } 
    } 
}