Fluent nhibernate映射查找表作为枚举
我正在尝试使用以下方法将查找表映射到枚举: FluentNhibernate 1.3.0.733 NHibernate 3.3.1.4000 我无法加载对象。如果删除枚举映射,则可以加载对象 代码: 我做错了什么?由一个愚蠢的错误引起的。 我将状态映射为id,而不是属性 正确的映射:Fluent nhibernate映射查找表作为枚举,nhibernate,fluent-nhibernate-mapping,Nhibernate,Fluent Nhibernate Mapping,我正在尝试使用以下方法将查找表映射到枚举: FluentNhibernate 1.3.0.733 NHibernate 3.3.1.4000 我无法加载对象。如果删除枚举映射,则可以加载对象 代码: 我做错了什么?由一个愚蠢的错误引起的。 我将状态映射为id,而不是属性 正确的映射: public OrderMapping() { Table("orders"); Id(x => x.Id); Map(
public OrderMapping()
{
Table("orders");
Id(x => x.Id);
Map(x => x.Status, "state_id").CustomType<Order.OrderStatus>().Not.Nullable();
References(x => x.Address).Cascade.All().Column("address_id");
References(x => x.Customer).Cascade.All().Column("customer_id");
}
public OrderMapping()
{
表(“订单”);
Id(x=>x.Id);
Map(x=>x.Status,“state_id”).CustomType().Not.Nullable();
引用(x=>x.Address).Cascade.All().Column(“Address_id”);
引用(x=>x.Customer).Cascade.All()列(“客户id”);
}
您将OrderStatus映射为Id,而不是属性。据我所知,CustomType应该是int,而不是Order.OrderStatus。你是正确的,我应该将其映射为属性,而不是id。@DirkTrilsbeek CustomeType确实应该是枚举类型(这将在数据库中为你提供整数)。
public class Order
{
public enum OrderStatus
{
PaymentPending = 0
}
public virtual int Id { get; set; }
public virtual Customer Customer { get; set; }
public virtual Address Address { get; set; }
public virtual IList<OrderLine> OrderLines { get; set; }
public virtual OrderStatus Status { get; set; }
public virtual DateTime Created { get; set; }
public Order()
{
OrderLines = new List<OrderLine>();
}
}
public OrderMapping()
{
Table("orders");
Id(x => x.Id);
Id(x => x.Status, "state_id").CustomType<Order.OrderStatus>().Not.Nullable();
References(x => x.Address).Cascade.All().Column("address_id");
References(x => x.Customer).Cascade.All().Column("customer_id");
}
CREATE TABLE [order_states] (
[id] INTEGER NOT NULL PRIMARY KEY,
[state] NVARCHAR(50) NOT NULL
);
CREATE TABLE [orders] (
[id] INTEGER NOT NULL PRIMARY KEY,
[customer_id] INTEGER NOT NULL,
[address_id] INTEGER NOT NULL,
[state_id] INTEGER NOT NULL,
[created] DATE,
FOREIGN KEY(customer_id) REFERENCES customers(id),
FOREIGN KEY(address_id) REFERENCES addresses(id),
FOREIGN KEY(state_id) REFERENCES order_states(id)
);
public OrderMapping()
{
Table("orders");
Id(x => x.Id);
Map(x => x.Status, "state_id").CustomType<Order.OrderStatus>().Not.Nullable();
References(x => x.Address).Cascade.All().Column("address_id");
References(x => x.Customer).Cascade.All().Column("customer_id");
}