【发布时间】:2011-11-01 08:01:08
【问题描述】:
我需要知道我做错了什么,因为生成的查询与数据库表的属性不匹配,而且我认为我的类的类型和映射都很好。这是我的代码
public class Usuario
{
#region Atributos
private int _intID = 0;
private Perfil _Perfil_FK = null;
private String _strNombre = "";
private String _strPassword = "";
#endregion
#region Propiedades
public int ID
{
get { return _intID; }
set { _intID = value; }
}
public Nullable<int> IDPerfil_FK { get; set; }
public virtual Perfil Perfil_FK
{
get { return _Perfil_FK; }
set { _Perfil_FK = value; }
}
public String Nombre
{
get { return _strNombre; }
set { _strNombre = value; }
}
public String Password
{
get { return _strPassword; }
set { _strPassword = value; }
}
#endregion
}
我的测试只是这个_db.Usuario()
生成的 Sql 查询
SELECT
[Extent1].[IDUsuario] AS [IDUsuario],
[Extent1].[IDPerfil_FK] AS [IDPerfil_FK],
[Extent1].[Nombre] AS [Nombre],
[Extent1].[Password] AS [Password],
[Extent1].[PerfilID] AS [PerfilID] <-- this attribute doesn't exit's
FROM [dbo].[Usuario] AS [Extent1];
这是我的数据库上下文类
public class MasterPageAtentoDB : DbContext
{
public DbSet<Pagina> Pagina { get; set; }
public DbSet<Perfil> Perfil { get; set; }
public DbSet<Permiso> Permiso { get; set; }
public DbSet<Usuario> Usuario { get; set; }
protected override void OnModelCreating(System.Data.Entity.ModelConfiguration.ModelBuilder modelBuilder)
{
modelBuilder.Entity<Usuario>().Property(r => r.ID).HasColumnName("IDUsuario");
modelBuilder.Entity<Pagina>().Property(r => r.ID).HasColumnName("IDPagina");
modelBuilder.Entity<Permiso>().Property(r => r.ID).HasColumnName("IDPermiso");
modelBuilder.Entity<Perfil>().Property(r => r.ID).HasColumnName("IDPerfil");
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
base.OnModelCreating(modelBuilder);
}
}
我的数据库表
【问题讨论】:
-
我不确定,但 EF4.1 DbContext 的东西很大程度上基于名称和名称模式,我建议删除
_FK后缀。
标签: c# linq entity-framework-4.1