Tôi có ba lớp được gọi là Broker
, Instrument
và BrokerInstrument
.Cách thêm một mục vào ISet <T>?
using Iesi.Collections.Generic;
public class Broker : ActiveDefaultEntity
{
public virtual string Name { get; set; }
public virtual ISet<BrokerInstrument> BrokerInstruments { get; set; }
}
public class Instrument : Entity
{
public virtual string Name { get; set; }
public virtual string Symbol {get; set;}
public virtual ISet<BrokerInstrument> BrokerInstruments { get; set; }
public virtual bool IsActive { get; set; }
}
public class BrokerInstrument : Entity
{
public virtual Broker Broker { get; set; }
public virtual Instrument Instrument { get; set; }
public virtual decimal MinIncrement { get; set; }
}
Nếu tôi tạo ba đối tượng mới (một trong mỗi loại) bằng cách sử dụng các lớp đó làm cách nào để liên kết chúng? Ví dụ:
Instrument instrument = new Instrument {
Name = "Test Instrument",
Symbol = "Test",
IsActive = true
};
Broker broker = new Broker {
Name = "My Test Broker",
IsActive = true,
IsDefault = false
};
BrokerInstrument brokerInstrument = new BrokerInstrument {
Broker = broker,
Instrument = instrument,
MinIncrement = 0.01M
};
như thế nào instrument
"biết" rằng một mới brokerInstrument
hiện đang liên kết với nó? Nếu bây giờ tôi chạy if (instrument.Brokerinstruments == null)
tôi nhận được true
. Tôi có phải liên kết các đối tượng trong cả tuyên bố BrokerInstrument
và sau đó quay lại và thêm nó vào instrument.BrokerInstruments ISet
?
Nếu tôi cố gắng thực hiện: instrument.BrokerInstruments.Add(instrument)
Tôi gặp lỗi vì giá trị rỗng của nó. Bối rối. Tôi đang thiếu gì? Cách tốt nhất để mô hình các mối quan hệ như thế này là gì? các đối tượng này sẽ tiếp tục tồn tại trong cơ sở dữ liệu bằng NHibernate.
Trông đầy hứa hẹn tuy nhiên khi tôi chạy một thử nghiệm đơn vị NHibernate than phiền với 'TestFixture thất bại: NHibernate.PropertyNotFoundException: Không thể tìm thấy một setter cho tài sản 'BrokerInstruments' trong lớp 'MooDB.Domain.Instrument'' Tôi có cần phải làm một cái gì đó đặc biệt trong NHibernate hiện nay? Nó có vẻ khá phức tạp, nhưng tất cả tôi muốn làm là mô hình một mối quan hệ một-nhiều trong một mô hình miền và sau đó có NHibernate tồn tại những thay đổi liên tục cho db. –
Ah, tôi đã bỏ lỡ bit NHibernate. Tôi sẽ sửa đổi cho phù hợp ... Xong. –
Hầu như! trên dòng 'protected set' tôi nhận được lỗi:' Không thể chuyển đổi hoàn toàn kiểu 'System.Collections.Generic.IEnumerable' thành 'System.Collections.Generic.ISet '. Một chuyển đổi rõ ràng tồn tại (bạn đang bỏ lỡ một diễn viên?) ' –