【问题标题】:.NET ORM for Database with no primary keys defined.NET ORM 用于未定义主键的数据库
【发布时间】:2009-10-23 14:16:46
【问题描述】:

有没有人知道 .Net 的 ORM 工具可以在没有定义主键的数据库上工作?顺便说一下,我们正在运行 MS SQL Server 2005。

我无法更改数据库架构并添加主键 - 数据库是我们 ERP 系统的数据库,他们的业务逻辑知道什么会使表格变得毫无意义。

例如,'Customer' 表在字段 CustomerNumber 上有一个主键是有意义的。 SQL Server 2005 在“客户”表上没有任何主键,但 ERP 软件阻止任何人添加两个具有相同客户编号的客户。因此,如果我直接访问数据库,我可以添加两个具有相同 CustomerNumber 的客户,但在通过我们的 ERP 软件时会被阻止。

到目前为止,我已经成功地使用了 LINQ-SQL。我可以在 VS2008 的设计器中定义主键并使用 LINQ-SQL 的所有功能。不过,我即将开始一个大型项目,正在寻找更成熟的 ORM 工具。我已经检查了 LLBL Gen Pro,但似乎无法让它工作。我还检查了 MS Entity Framework 并在那里遇到了麻烦。

有任何想法或有人管理过类似于我希望做的事情吗?

【问题讨论】:

    标签: .net orm


    【解决方案1】:

    我认为您已经确定了您需要的密钥,但可能没有意识到。

    您的数据库确实有主键,它们只是没有被数据库引擎强制执行。

    例如,您的Customer 表有一个CustomerNumber 字段,等等。

    任何 .NET ORM(我碰巧喜欢 NHibernate)都可以很好地管理读取和更新。

    创建和删除是您可能遇到问题的时间。

    对于 Create,您需要生成新的有效 CustomerNumber 值;对于删除,您需要确保不违反任何外键关系。 (在 NHibernate 中,您可以使用 assigned 的主键类型,这基本上意味着您的代码将分配键值并且 NHibernate 必须使用它们。)

    【讨论】:

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