【问题标题】:Non-Generated Property in LINQ to SQL insert behaviorLINQ to SQL 插入行为中的非生成属性
【发布时间】:2009-08-04 20:22:39
【问题描述】:

是否可以强制 LINQ to SQL 设计器行为编辑器识别不是由设计器本身生成的表实体上的属性?也就是说 - 我想将自定义属性(在我自己的部分类中定义)作为参数传递给存储过程。

我已经尝试在 XML 中手动指定参数名称(这对某些其他事情有好处,例如当 L2S 设计人员无法理解返回类型与现有表匹配的事实时强制 SP 返回类型)。不幸的是,这不起作用。

我目前正在移植一组用 .NET 1.1 编写的 Web 服务,以利用从那时起出现的一切。我正在尝试在 LINQ 对象中整合由两层业务对象(主要是字段名称从数据库更改为对象和类型转换)处理的所有行为。

在这种情况下,最简单的解决方案是更改数据库中 SP 的参数类型,这就是我在这种情况下要做的事情。然而,数据库中已经有三组独立的 SP 运行。旧的网络服务。 .NET 2.0 Web 服务和网站。我试图避免 WCF Web 服务 SP 的激增,因为我认为考虑到大多数数据访问是如何完成的,这将是一种非常常见的情况。

【问题讨论】:

  • 为可能查看它的其他人简化此操作:如果您在设计器 (.dbml) 中右键单击表,并选择配置行为,您将能够指定要使用的存储过程,而不是生成的命令(插入、删除、更新)。如果您选择使用存储过程,它将允许您将 SP 参数与您的类的属性相匹配。问题是部分类的属性完全丢失了。

标签: c# linq linq-to-sql


【解决方案1】:

在支持部分类声明属性的设计器中存在许多问题。其中一些将在 2010 年得到解决,但我不确定是否涵盖了这个特定问题。您可能需要在 connect.microsoft.com 上输入一个错误项,以让团队查看它。

同时,我怀疑您将不得不在部分类中手动管理这些函数,而不是通过设计器/dbml。大部分 LINQ to SQL 的存储过程支持都是基于约定的,因此只要方法命名正确,即使您没有在 dbml 中显式配置它,也应该使用它。

【讨论】:

    【解决方案2】:

    它会显示为“否”,您需要:

    • 不使用 SP 进行插入行为
    • 试试 Jim 的建议
    • 保留该属性,使其可用
    • 手动编辑生成的代码(糟糕)*这不是建议,只是一个选项!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多