首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在视图上执行InsertOnSubmit

在视图上执行InsertOnSubmit
EN

Stack Overflow用户
提问于 2014-03-25 14:36:21
回答 2查看 58关注 0票数 0

我们有一个ASP.NET MVC应用程序和一个Server后端。应用程序在我们客户的主站点上运行,但是每个站点在Server中都有自己的数据库。(由于不同的原因,他们不应该在彼此之间分享大部分信息。)但是,有些一般信息是共享的,这是存储在共享数据库中的,并且每个特定于站点的数据库都有视图,这些视图表示各自数据库中的表。

例如,当我有站点S1、S2、S3及其数据库D1、D2、D3和带有共享表TS的碎片数据库DS时

现在,在S1-S3数据库中,我将看到一个简单的底层查询视图:

代码语言:javascript
复制
SELECT * FROM DS.TS;

通过这样编写,Server以某种方式自动地将所有插入、更新和删除传递到DS.TS,而不需要显式而不是触发器。这使我们的生活更加轻松,因为我们也只需要处理到一个数据库的一个连接,而不需要费心处理两个不同的数据库。

虽然我们在应用程序中自己编写了Delete和Update命令,并且不使用Linq2Sql,但它们工作得很好。但是,共享表上的insert命令使用的是InsertOnSubmit,除以下例外情况外失败:

代码语言:javascript
复制
Can't perform Create, Update, or Delete operations on 'Table(TS)' because it has no primary key.
   at System.Data.Linq.Table`1.InsertOnSubmit(TEntity entity)  

是否有任何方法使此工作,或者我是否需要自己在这些共享表上创建插入命令并使用DbCommand.ExecuteNonQuery()执行它们?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-25 14:44:06

带有视图的LINQ不知道哪个列包含键。您可能能够调整生成的模型,并且只设置应该是主键的列。但是,在您的视图中要注意的是,您不应该进行选择*,因为随着时间的推移,它可能会降低性能。

票数 1
EN

Stack Overflow用户

发布于 2014-03-25 15:57:43

可以将模型中主键的IsPrimaryKey属性设置为True

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22637756

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档