我在两个数据库中有两个表APP,我想在这两个数据库获得相同的应用程序标识符,但当我将应用程序插入第一个数据库并插入第二个数据库时,我生成了一个新的Guid(如果我在列中指定了默认值)或一个空Guid。
这是我在数据库的两个表中插入应用程序的代码:
app.Id_App = Guid.NewGuid();
app.DateAdded = DateTime.Now;
app.PublisherId_advertiserPublisher = id_publisher;
db.AppSet.AddObject(app);
db.SaveChanges();
//add app to db2
App2 appDB2 = new App2()
{
App_link=app.App_link,
Id_app= app.Id_App,
CategoryId_cat=app.CategoryId_cat,
Description=app.Description,
keywords=keywords.Key_word,
};
DB2.App.AddObject(appDB2);
pushDB.SaveChanges();
我已经将表定义中的rowGuid
设置为否。我错过什么了吗?有没有更好的方法可以在两个不同的数据库中获得相同的guid密钥?谢谢
如果最初指定Id_app
应该是数据库生成的,然后将其更改为DatabaseGenerated.None
,则实体框架不会发出sql来更改底层表。您需要删除并重新创建表,或者在数据库中手动更改表,或者创建自定义迁移。
参考文献:
使用实体框架丢弃身份
使用自定义迁移打开/关闭IDENTITY
迁移:不会检测到对DatabaseGeneratedOption的更改-您可以在未来的版本中投票支持它