许多对许多的非冬眠

本文关键字:许多 冬眠 | 更新日期: 2023-09-27 18:04:47

public class Movie
{
public int id;
public string Title;
public IList<Director> dirs;
}
public class Director
{
public string Name;
public DateTime birthday;
}

是否可以像这样映射到一个模式:

CREATE TABLE IF NOT EXISTS `movie` (
  `m_ID` varchar(9) NOT NULL 
  `Title` varchar(255) NOT NULL 
  PRIMARY KEY (`m_ID`),
  KEY `m_ID` (`ReleaseDate`,`Title`,)
)
CREATE TABLE IF NOT EXISTS `m_director` (
  `dirID` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `dirName` varchar(40) NOT NULL,
  `birthday` date 
  PRIMARY KEY (`dirID`),
  UNIQUE KEY `dirName` (`dirName`)
) 
CREATE TABLE IF NOT EXISTS `m_directs` (
  `m_ID` char(9) NOT NULL
  `dirID` int(11) unsigned NOT NULL,
  UNIQUE KEY `m_ID_2` (`m_ID`,`dirID`),
  KEY `m_ID` (`m_ID`),
  KEY `dirID` (`dirID`)
) 

没有在类Director中维护Movie列表?我想我真正想要的只是一种方法来确保在m_director表中没有重复的导演名字,允许电影的多个导演,而不是让director类关心他们导演的电影。

如果只是添加一个导演执导的电影列表会更好吗?如何防止同一部电影在这里被添加两次?

许多对许多的非冬眠

您正在谈论的是业务逻辑的重要组成部分。它应该管理导演,确保他们不重复,确保电影不被添加两次。它和NHibernate没有任何关系。

我不认为这是可能的映射你的场景没有使用电影列表在你的导演类…因为这是多对多映射这就是双方关系的定义方式。