LINQ to SQL:如何将记录插入视图?

Rav*_*avi 3 c# linq-to-sql

我正在使用Linq to SQL进行数据库操作,并且我正在尝试在VIEW中执行插入操作,它会抛出错误,

XXt threw exception:  System.InvalidOperationException: Can't perform Create, 
Update or Delete operations on 'Table(XXX)' because it has no primary key.
Run Code Online (Sandbox Code Playgroud)

如何使用LINQ使用C#将记录插入View?

谢谢.

Sta*_*ams 5

您可以在此处根据可更新视图插入/更新到视图中.只能插入/更新一个基础表,否则它将失败.要使用LINQ实现此功能,请执行以下操作:

  • 在.DBML文件中,将视图中的一列(或多列)标记为主键
  • 确保您希望插入/更新的视图中的任何映射仅作为指向基表列的链接公开.例;
    • 可插入/可更新列不能包括;
      • SUM(BaseTable.ColumnName)作为ColumnName
      • ISNULL(BaseTable.ColumName,0)作为ColumnName
      • BaseTable.ColumnName1 +''+ BaseTable.ColumnName2作为ColumnName
    • 但可以包括;
      • BaseTable.ColumnName
      • BaseTable.ColumnName为MyNewName
  • 不是直接映射到基表的任何列标记为.DBML中的自动生成值.

试一试.我成功地使用这种技术将视图用作我用于读取/插入/更新记录的唯一对象.