gpt4 book ai didi

c# - Fluent 和 NHibernate 的泛型

转载 作者:太空宇宙 更新时间:2023-11-03 16:57:17 25 4
gpt4 key购买 nike

我正在尝试在用户和组织之间创建一个消息系统 - 也就是说,用户可以发送和接收来自用户或组织的消息。

所以,为了支持这个系统,我从一个接口(interface)开始:

public interface IPassableObject<F, T, O>
where F : DomainObject
where T : DomainObject
{
Guid PassedItemId { get; set; }
O Item { get; set; }
F From { get; set; }
T To { get; set; }
DateTime Created { get; set; }
}

后来的想法是我希望能够传递的不仅仅是消息——比如序列化的对象。所以,我们有一个包含 3 种通用类型的类。收件人、发件人和对象

然后我创建了我的消息类

public class Message<T, F> : DomainObject, IPassableObject<T, F, string>
where F : DomainObject
where T : DomainObject
{

public Message()
{
Created = DateTime.Now;
}

#region IPassableObject<T,F> Members

public virtual Guid PassedItemId { get; set; }

public virtual string Item { get; set; }

public virtual T From { get; set; }

public virtual F To { get; set; }

public virtual DateTime Created { get; set; }

#endregion
}

然后,我制作了 table 来支撑我传递的元素:

CREATE TABLE dbo.PassedItems
(
PassedItemId uniqueidentifier NOT NULL,
FromId uniqueidentifier NOT NULL,
ToId uniqueidentifier NOT NULL,
SerializedObject varchar(max) NOT NULL,
Created datetime DEFAULT(GETEDATE()) NOT NULL,

CONSTRAINT PK_PassedItems PRIMARY KEY CLUSTERED (PassedItemId)
)

我的用户和组织的 ID 都是 guid。现在,我对用户 - 用户消息有了流畅的映射。我的想法是,我将只需要创建 4 个映射,而不需要为 user-user、user-org、org-user 和 org-org 维护 4 个单独的类。我希望 Nhibernate 会获取表中的 guid,并根据指定的类型自动尝试拉入对象。

public class UserToUserMessageMap : ClassMap<Message<UserProfile, UserProfile>>
{
public UserToUserMessageMap()
{
WithTable("PassedItems");

Id(x => x.PassedItemId, "PassedItemId").GeneratedBy.Guid();

Map(x => x.Item, "SerializedObject");
Map(x => x.Created);

References(x => x.From, "FromId");
References(x => x.To, "ToId");
}
}

我遇到的问题是,当我运行我的应用程序时,出现运行时错误:

NHibernate.MappingException: An association from the table PassedItems does not specify the referenced entity

那么,这种方法会奏效吗?我究竟做错了什么?谢谢!

最佳答案

那么“从”和“到”的映射是什么样的?

因为我认为 NH 没有如何映射这些实体,因为您没有提供映射信息。

总的来说,在我看来,您好像在重新发明轮子,您是否研究过 Web 服务(SOAP 和 REST)、消息队列、远程处理 (.Net) 等技术堆栈。以及 WCF、ASMX(Web 服务)、nServiceBus、MassTransit、MSMQ 等特定实现,仅举几例...

奥利

关于c# - Fluent 和 NHibernate 的泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1302776/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com