我在项目中使用AdventureWorks示例数据库。我可以使用vStorewithDemographics显示客户(作为各种商店)信息。它是从数据库中的不同表中检索不同数据的视图。
我希望我的程序使用linq to entity将新客户插入数据库,我不知道如何解决这个问题。插入视图只会给我错误,我认为会发生错误,因为它不是表格。
有什么方法可以解决这个问题吗?
答案 0 :(得分:1)
是的,可以按照以下步骤进行操作
- >创建一个而不是触发器并使用它可以执行它 例如,我有两个表客户和客户联系人后面包含客户的电话号码和一个视图名称客户详细信息将带来客户的所有细节,如下所示
创建视图[dbo]。[CustomerDetails] as 选择c。*,cc.PhoneNumber来自客户c内部联系customerContact cc on c.CustomerId = cc.CustomerId
要插入,请创建一个而不是触发器
创建TRIGGER trgInsteadOfUpdate ON dbo.CustomerDetails
INSTEAD OF INSERT
AS
声明@Id int
- 插入客户 INSERT INTO客户SELECT CustomerName,CustomerAddress,State,Country FROM inserted
设置@Id = SCOPE_IDENTITY()
- 插入CustomerContact INSERT INTO customerContact SELECT PhoneNumber,@ Id FROm inserted
GO
当插入linq时,我可以使用以下两种方式中的任何一种
//插入视图
var newCusContact = new CustomerDetail {Country =“India”,CustomerAddress =“bbb”,CustomerName =“Tested”,PhoneNumber =“7879654”,State =“Delhi”};
db.CustomerDetails.InsertOnSubmit(newCusContact);
db.SubmitChanges();
OR
string insertStatement =“插入CustomerDetails(CustomerName,CustomerAddress,State,Country,PhoneNumber)值('DummyValue','DummyValue','Delhi','India','123459')”;
db.ExecuteQuery(insertStatement);
db.SubmitChanges();
希望这有助于你