0

我有以下数据库架构:

http://lh4.ggpht.com/_SDci0Pf3tzU/SdM3XnAmmxI/AAAAAAAEps/Ie3xW3ZVNfQ/styleerror.png

问题是如何在 Nhibernate 中创建实体数据类?

这是否更好:

public class Store
{
    public virtual int Id { get; private set; }
    public virtual string Name { get; set; }
    public virtual IList<Product> Products { get; set; }
    public virtual IList<Employee> Staff { get; set; }

}

public class Employee
{
    public virtual int Id { get; private set; }
    public virtual string FirstName { get; set; }
    public virtual string LastName { get; set; }
    public virtual Store Store { get; set; }
} 

public class Product
{
    public virtual int Id { get; private set; }
    public virtual string Name { get; set; }
    public virtual double Price { get; set; }
    public virtual IList<Store> StoresStockedIn { get; private set; }
}

还是这样更好?公共类商店 { 公共虚拟 int Id { 获取;私人套装;} 公共虚拟字符串名称 { 获取;放; }

}

public class Employee
{
    public virtual int Id { get; private set; }
    public virtual string FirstName { get; set; }
    public virtual string LastName { get; set; }
    public virtual Store Store { get; set; }
} 

public class Product
{
    public virtual int Id { get; private set; }
    public virtual string Name { get; set; }
    public virtual double Price { get; set; }

}

public class StoreProduct
{
   public virtual List<Product> Products{get;set;}
   public virtual List<Store> Stores{get;set;};
}

我认为第一个比第二个更容易理解,不是吗?

4

1 回答 1

1

如果您修改“StoreProduct”表,使其没有代理主键,但存在 2 个外键列(ProductId 和 StoreId)的主键,那么您可以简单地将自己限制为 3 个实体:-员工-产品- 店铺

然后,您的 Store 类可以有一组产品,可以简单地将其映射为多对多关系。

public class Store
{
   public int Id {get;set;}
   public string Name {get;set;}

   public ISet<Product> Products = new HashedSet<Product>();
}

在 Store.hbm.xml 映射中:

<set name="Products" table="StoreProducts">
   <key column="Store_Id" />
   <many-to-many class="Product" column="Product_Id" />
</set>

所以,回答你的问题:第一个选择更好。

于 2009-04-01T12:21:13.907 回答