MyEntities db = new MyEntities(theParameter);
这是参数:
metadata=res://*/Models.My.csdl|res://*/Models.My.ssdl|res://*/Models.My.msl;provider=System.Data.SqlClient;provider connection string='Data Source=[correctIpAddress];Initial Catalog=testDbName;User ID=myUsername;Password=myPassword;MultipleActiveResultSets=True'
当我向db添加监视时,它有许多表,其中包括表tblTestTable。之后我做了:
db.CreateDatabase();
在新创建的数据库中没有tblTestTable表。为什么会这样?
答案 0 :(得分:0)
当我向db添加监视时,它有许多表,其中包括表 tblTestTable。
我想你的意思是你在一个名为ObjectContext
的{{1}}实例上的调试器中添加一个监视,你正在观察导出的上下文中属性的db
和其中一个这些属性称为ObjectSet<T>
,对吗?
通常,tblTestTable
与数据库中的表之间没有严格的一对一关系。您可以在上下文中使用不代表其自己的表的ObjectSet,例如:
如果ObjectSet<T>
/ T
的实体ObjectSet<T>
派生自另一个基本实体,并且此继承使用每个层次结构的策略进行映射,则两个实体都将使用同一个表,通常命名为基本实体。 (通常不需要派生实体的这样一个单独的集合,但它是可能的。)在这种情况下,tblTestTable
在数据库中没有自己的表。
单个表可以拆分为多个实体(称为“Table-Splitting”)。您可以在上下文中使用两个或更多ObjectSet,但所有ObjectSet都将使用相同的表。
即使反过来也是可能的:您可以在上下文中拥有两个ObjectSet,但它们将生成三个表。如果两个实体通过多对多关系相关联,而这种关系由数据库中另外的第三个连接表表示而没有自己的ObjectSet,则会发生这种情况。
这些只是可以的原因。如果没有看到模型和关系的细节,就很难对问题给出更具体的答案。
答案 1 :(得分:0)
该表未创建,因为它没有主键。 一旦我设置它,它就与其他的一起创建。