没有定义主键的.NET ORM for Database

时间:2009-10-23 06:00:29

标签: .net orm

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

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

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

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

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

1 个答案:

答案 0 :(得分:3)

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

您的数据库确实有主键,数据库引擎不会强制执行这些主键。

例如,您的Customer表格中有CustomerNumber字段,依此类推。

任何.NET ORM(我碰巧赞成NHibernate)都可以管理Read和Update。

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

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