我使用Nhibernate和Nhibernate.Mapping.Attributes。 我可以很容易地创建一个模式,它可以很好地工作,如果我像添加列一样简单更新一切顺利,我的数据库正确更新。 如果我添加一个新的子子类,架构已正确更新,而DB也是如此,但我得到了这个异常
Cannot instantiate abstract class or interface: AEGestioneRicevute.Entities.Dichiarazione|| in NHibernate.Tuple.PocoInstantiator.Instantiate() in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Tuple\PocoInstantiator.cs:line 89
我必须让它工作的唯一方法是从整个数据库中删除并创建零,但这不是我喜欢做的。
这是我的一个类映射 (基峰)
[HibernateMapping(0, Schema = "Schema", DefaultAccessType = typeof(int), AutoImport = true, Namespace = "AEGestioneRicevute.Entities", Assembly = "AEGestioneRicevute")]
[Class (1, Table = "Dichiarazione", NameType = typeof(Dichiarazione), Abstract = true, SelectBeforeUpdate = false)]
public abstract class Dichiarazione
{
ID_Dichiarazione dichID;
[CompositeId(2, Name = "Dichiarazione_ID", ClassType = typeof(ID_Dichiarazione))]
[KeyProperty(3, Name = "Progressivo", Column = "IDProgressivo", Type = "string")]
[KeyProperty(4, Name = "Protocollo", Column = "IDProtocollo", Type = "string")]
[KeyProperty(4, Name = "CodiceFornitura", Column = "IDCodiceFornitura", Type = "string")]
public virtual ID_Dichiarazione Dichiarazione_ID
{
get { return dichID; }
set { dichID = value; }
}
(第一个子类)
[HibernateMapping(20, Schema = "Schema", DefaultAccessType = typeof(int), AutoImport = true, Namespace = "AEGestioneRicevute.Entities", Assembly = "AEGestioneRicevute")]
[JoinedSubclass(21, ExtendsType = typeof(Dichiarazione), Table = "DichiarazioneUnici", NameType = typeof(DichiarazioneUnici), Abstract = true)]
public abstract class DichiarazioneUnici : Dichiarazione
{
[Key(22)]
[Column(23, Name = "Progressivo")]
[Column(24, Name = "Protocollo")]
[Column(25, Name = "CodiceFornitura")]
(子子类)
[HibernateMapping(50, Schema = "Schema", DefaultAccessType = typeof(int), AutoImport = true, Namespace = "AEGestioneRicevute.Entities", Assembly = "AEGestioneRicevute")]
[JoinedSubclass(51, ExtendsType = typeof(DichiarazioneUnici), Table = "UnicoIVD", NameType = typeof(UnicoIVD))]
public class UnicoIVD : DichiarazioneUnici
{
[Key(200)]
[Column(201, Name = "Protocollo")]
[Column(202, Name = "Progressivo")]
[Column(203, Name = "CodiceFornitura")]
有什么想法吗? 提前致谢