मैंने अपनी समस्या का हल ढूंढने का प्रयास किया लेकिन अब तक मेरे प्रयास व्यर्थ थे। :-(MySQL 5.5 + .NET कनेक्टर + इकाई फ्रेमवर्क + माइग्रेशन = स्वरूप अपवाद
मैंने विजुअल स्टूडियो 2010, .NET Framework 4, C#, इकाई फ्रेमवर्क 5.0, MySQL 5.5 और यह संबंधित .NET कनेक्टर (संस्करण 6.5.4) का उपयोग कर एक वेब प्रोजेक्ट बनाया है। मैं पहले कोड का उपयोग कर रहा हूं । संस्थाओं और हे/आर मानचित्रण के लिए दृष्टिकोण
समस्या मैं का सामना करना पड़ रहा हूँकि मैं निष्पादित करने के लिए क्या एक सरल प्रवास का लग रहा था असमर्थ हूँ है यहाँ मेरी इकाई वर्ग हैं:।
public class Usuario
{
public int Id { get; set; }
[Required]
[StringLength(100)]
public string NomeCompleto { get; set; }
[Required]
[StringLength(100)]
[DataType(DataType.EmailAddress)]
public string Email { get; set; }
[Required]
[StringLength(30)]
public string Login { get; set; }
[Required]
[StringLength(64)]
public string Senha { get; set; }
[Required]
public bool Ativo { get; set; }
//[Timestamp]
[ConcurrencyCheck]
public int Versao { get; set; }
}
public class Perfil
{
public int Id { get; set; }
[Required]
[StringLength(50)]
public string Nome { get; set; }
[StringLength(100)]
public string Descricao { get; set; }
//[Timestamp]
[ConcurrencyCheck]
public int Versao { get; set; }
public virtual ICollection<Usuario> Usuarios { get; set; }
public virtual ICollection<Permissao> Permissoes { get; set; }
}
public class Permissao
{
public int Id { get; set; }
[Required]
[StringLength(50)]
public string Nome { get; set; }
[StringLength(100)]
public string Descricao { get; set; }
//[Timestamp]
[ConcurrencyCheck]
public int Versao { get; set; }
public virtual ICollection<Perfil> Perfis { get; set; }
}
Add-Migration Acesso
द्वारा उत्पन्न कोड (केवल Up()
विधि):
public partial class Acesso : DbMigration
{
public override void Up()
{
CreateTable(
"dbo.Usuario",
c => new
{
Id = c.Int(nullable: false, identity: true),
NomeCompleto = c.String(nullable: false, storeType: "mediumtext"),
Email = c.String(nullable: false, storeType: "mediumtext"),
Login = c.String(nullable: false, storeType: "mediumtext"),
Senha = c.String(nullable: false, storeType: "mediumtext"),
Ativo = c.Boolean(nullable: false),
Versao = c.Int(nullable: false),
})
.PrimaryKey(t => t.Id);
CreateTable(
"dbo.Perfil",
c => new
{
Id = c.Int(nullable: false, identity: true),
Nome = c.String(nullable: false, storeType: "mediumtext"),
Descricao = c.String(storeType: "mediumtext"),
Versao = c.Int(nullable: false),
})
.PrimaryKey(t => t.Id);
CreateTable(
"dbo.Permissao",
c => new
{
Id = c.Int(nullable: false, identity: true),
Nome = c.String(nullable: false, storeType: "mediumtext"),
Descricao = c.String(storeType: "mediumtext"),
Versao = c.Int(nullable: false),
})
.PrimaryKey(t => t.Id);
CreateTable(
"dbo.PerfilPermissao",
c => new
{
PerfilId = c.Int(nullable: false),
PermissaoId = c.Int(nullable: false),
})
.PrimaryKey(t => new { t.PerfilId, t.PermissaoId })
.ForeignKey("dbo.Perfil", t => t.PerfilId, cascadeDelete: true)
.ForeignKey("dbo.Permissao", t => t.PermissaoId, cascadeDelete: true)
.Index(t => t.PerfilId)
.Index(t => t.PermissaoId);
CreateTable(
"dbo.UsuarioPerfil",
c => new
{
UsuarioId = c.Int(nullable: false),
PerfilId = c.Int(nullable: false),
})
.PrimaryKey(t => new { t.UsuarioId, t.PerfilId })
.ForeignKey("dbo.Usuario", t => t.UsuarioId, cascadeDelete: true)
.ForeignKey("dbo.Perfil", t => t.PerfilId, cascadeDelete: true)
.Index(t => t.UsuarioId)
.Index(t => t.PerfilId);
}
}
सबसे पहले मैं क्योंकि एक त्रुटि बदलने से पहले हुई (नहीं किया गया प्रकार rowversion के बारे में कुछ
[Timestamp]
public byte[] Versao { get; set; }
से
[ConcurrencyCheck]
public int Versao { get; set; }
को Versao (संस्करण) का नाम गुण बदलना पड़ा नामस्थान या उपनाम के साथ योग्य)। इस बदलाव के बाद मैं प्रवास उत्पन्न करने में सक्षम था, लेकिन Update-Database
आदेश कंसोल में दिखाया गया है निम्नलिखित त्रुटि के साथ विफल: (। इनपुट स्ट्रिंग एक सही स्वरूप में नहीं में नहीं था)
System.FormatException: Cadeia de entrada não estava em um formato incorreto.
em System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
मैंने कोशिश की MySQL संस्करण 5.5 और 5.1 का उपयोग करने के लिए; कनेक्टर के संस्करण 6.5.4, 6.4.5 और 6.3.9 और समस्या को हल नहीं कर सका।
क्या MySQL, इकाई फ्रेमवर्क और कोड का पहला दृष्टिकोण उपयोग करना संभव है? यदि नहीं, तो .NET एक के बजाय ओडीबीसी कनेक्टर पर स्विच करने के क्या परिणाम हैं?
अग्रिम धन्यवाद और बड़े प्रश्न के बारे में खेद है।
स्टैक ट्रेस क्या है? मुझे आश्चर्य है कि यह यह नहीं है: http://entityframework.codeplex.com/workitem/461 – Pawel