2009-10-23 22 views
2

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

我无法更改数据库模式并添加主键 - 数据库是我们ERP系统的一部分,他们的业务逻辑知道什么会使表格变得无关紧要。

例如,“客户”表在字段CustomerNumber上具有主键是有意义的。 SQL Server 2005在'Customer'表上没有任何主键,但ERP软件阻止任何人使用相同的CustomerNumber添加两个客户。所以,如果我直接进入数据库,我可以添加两个具有相同CustomerNumber的客户,但是在通过我们的ERP软件时可以避免。

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

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

回答

3

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

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

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

任何.NET ORM(我恰好倾向于)可以很好地管理读取和更新。

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

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