类型“X”未映射为表格

时间:2013-12-19 09:12:22

标签: c#-4.0 linq-to-sql entity-framework-4

我有我的表的ADO.NET实体数据模型,如果我直接使用它,它工作正常。

我想写一个包装器,这样我就不必再重复相同的代码了。结束编写一些DataContext扩展方法。

所以,有这样的东西从表中获取数据。

public static TEntity Get<TEntity>(this DataContext dataContext, object id, string primaryKeyName) 
        where TEntity : class, new()
{
    if (id == null)
        return new TEntity();

    var table = dataContext.GetTable<TEntity>();
    return table.Single(DynamicGet<TEntity>(primaryKeyName, id));
}

我将此方法称为

System.Data.IDbConnection conn = new System.Data.SqlClient.SqlConnection("ConnectionString");
conn.Open();
dataContext = new DataContext(conn);
dataContext.Get<X>(email);

当我调用上面的方法时,我收到此错误:类型“X”未映射为表。

X来自ADO.NET创建的模型,无法弄清楚为什么会抛出此异常。

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

真正的问题是我在Linq To Sql框架中使用DataContext而不是Linq To Entities,它不能一起使用。

说明:http://social.msdn.microsoft.com/Forums/en-US/5588e2ce-00f7-42ba-9feb-4d33a80ddb05/the-type-x-is-not-mapped-as-a-table?forum=adodotnetentityframework

答案 1 :(得分:0)

这是因为类型X在您的数据库中没有主键。向表中添加主键,从数据库更新模型,然后重试。