1
我有一個使用NHibernate和MySQL的c#.net 3.5應用程序。NHibernate:多對多的映射異常
我的SQL表在一個多到多模式連接配置字符串被佈局爲任務
CREATE TABLE `configstring` (
`ConfigStringID` int(11) NOT NULL AUTO_INCREMENT,
`ConfigString` varchar(45) NOT NULL,
PRIMARY KEY (`ConfigStringID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
CREATE TABLE `task_configstring` (
`ConfigStringID` int(11) NOT NULL,
`TaskID` int(11) NOT NULL,
PRIMARY KEY (`ConfigStringID`,`TaskID`),
KEY `TaskID` (`TaskID`),
KEY `ConfigStringID` (`ConfigStringID`),
CONSTRAINT `ConfigStringID` FOREIGN KEY (`ConfigStringID`) REFERENCES `configstring` (`ConfigStringID`) ON DELETE NO ACTION ON UPDATE NO ACTION,
CONSTRAINT `TaskID` FOREIGN KEY (`TaskID`) REFERENCES `task` (`TaskID`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=latin1
CREATE TABLE `task` (
`TaskID` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`TaskID`)
) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=latin1
我有一個Task
類,它包含這樣的配置字符串列表:
public class Task
{
public virtual IList<string> ConfigurationStrings { get; set; }
}
該類到數據庫的NHibernate XML映射如下所示:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly="QueueTest"
namespace="Phoenix.Action">
<class name="Task" table="queue_task">
<id name="Id" column="TaskID" type="int" >
<generator class="native"/>
</id>
<bag name="ConfigurationStrings" table="queue_task_configstring">
<key column="TaskID"/>
<many-to-many column="ConfigStringID"/>
</bag>
</class>
</hibernate-mapping>
但是,當我打電話Configuration().BuildSessionFactory()
,我得到這個異常:An association from the table task_configstring does not specify the referenced entity
什麼是做了許多一對多映射到一個System.String
對象的正確方法是什麼?
該類是一個System.String。我只想從'ConfigString'列的字符串 – PaulH
除非我弄錯了,否則您仍然需要一個ConfigString實體,然後您將在多對多關係中使用它。 –
創建一個類來包裝一個字符串似乎是錯誤的,因此它符合具有ID的數據庫約定。在'many-to-many'標籤中使用'formula'怎麼樣?是否有一些SQL SELECT語句可以只返回字符串? – PaulH