- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我已被迫屈服并开始学习 Fluent NHibernate(之前没有 NHibernate 经验)。在我的项目中,我正在对接口(interface)进行编程以减少耦合等。这意味着几乎“一切”都指的是接口(interface)而不是具体类型(IMessage 而不是 Message)。这背后的想法是通过能够模拟依赖关系来帮助提高它的可测试性。
但是,当我尝试映射到接口(interface)而不是具体类时,(流畅的)NHibernate 并不喜欢它。问题很简单——根据 Fluent Wiki,定义我的类的 ID 字段是明智的,例如
int Id { get; private set; }
获取典型的自动生成的主键。但是,这仅适用于具体类 - 我无法在接口(interface)上指定访问级别,必须在同一行中
int Id { get; set; }
我想这否定了在具体类中将 setter 设为私有(private)(想法是只有 NHibernate 应该设置数据库分配的 ID)。
现在,我想我只是将 setter 公开并尽量避免写入它的诱惑......但是有没有人知道什么是“正确的”,创建正确的最佳实践方法只有 NHibernate 可以写入的主键字段,同时仍然只能对接口(interface)进行编程?
已更新
根据我在 mookid 和 James Gregory 的以下两个答案之后的理解,我很可能走错了路——我不应该像现在这样为每个实体设置一个接口(interface)。这一切都很好。我想我的问题就变成了——是否没有理由针对任何实体的接口(interface)进行 100% 的编程?如果甚至有一种情况可以证明这是合理的,是否可以使用(流畅的)NHibernate 来做到这一点?
我问是因为我不知道,不是为了挑剔。感谢您的回复。 :)
最佳答案
我意识到这是一种转移,而不是对您问题的回答(尽管我认为 mookid 已经涵盖了这一点)。
您应该真正评估您的域实体上的接口(interface)是否真的提供了任何有值(value)的东西;很少有实际需要这样做的情况。
例如:IMessage
与 Message
的依赖相比,两者(几乎)毫无疑问共享相同的签名,这两者之间的耦合度如何降低?您不需要模拟一个实体,因为它很少有足够的行为需要被模拟。
关于c# - 在使用 Fluent NHibernate 映射时对接口(interface)进行编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/845536/
这是我的 Fluent 模型 struct Ailment: PostgreSQLModel { enum Frequency: String , Content { case regular
我正在尝试使用 Fluent Nhibernate 自动映射一个简单的继承层次结构,并且我需要为每个表使用与其类稍有不同的名称(下划线而不是 Pascal 大小写)。这似乎是一个使用约定的明显地方。我
如何为没有标识列的表指定流畅的 NHibernate 映射? 我想要这样的东西: public sealed class CustomerNewMap : ClassMap, IMap { p
使用 FluentMigrator,有没有办法找出 MigrateUp() 函数是否确实会迁移某些东西,或者它是否已经是最新的? 最佳答案 没有简单的方法可以使用公共(public) api 判断 M
我正在使用 Fluent NHibernate,我喜欢它! 我有一个小问题:启动时间大约是 10 秒,我不知道如何优化 Fluent nHibernate 为了减少这个启动时间的问题,我把它放在一个线
我在 Fluent NHIbernate 中使用 AutoPersistenceModel 来映射我的所有实体,并且一切正常:D 但是,我的几个对象有 public virtual IList Com
我有一个数据库,我正在运行多个应用程序。我喜欢通过为每个应用程序创建模式来分隔表。对于我最新的应用程序,我使用的是 FluentNHibernate。似乎我的大部分管道都是正确的,但是当我尝试查询其中
应用程序有许多扩展程序集,它们包含其类的映射。我需要为这些映射中的所有(基本、连接、多对多等)表名添加前缀。 例如 Assembly: ~/bin/Extensions/Foo.dll
您好,我很好奇 DDD 是如何使用 Fluent Nhibernate 真正实现的。例如,我有一个名为 User 的实体类和另一个名为 UserProfile 的类,就我而言,UserProfile
是否可以在 Fluent NHibernate 中映射来自多个程序集的实体? 我试过了 AutoPersistenceModel .MapEntitiesFromAssemblyOf() .AddEn
我有一个看起来像这样的基类: public abstract class MyBaseClass { public virtual DateTime UpdatedOn { get; set;
我有 Post 和 Comment 类,它们有一对多的关系,其中 Post 有一个评论列表。我如何将其映射为与 Fluent NHibernate 的单向关系,因为评论不需要知道其父 Post?目前,
我对如何查询模型对象的子对象并立即使用它感到困惑。我的Client包含数量Station child final class Client: PostgreSQLModel { var sta
目前我有一个表“ComponentAnalysis”和一个表“HistoryOfUse”,我正试图在 Fluent NHibernate 中进行映射。 一个成分分析应该只有1个使用历史,一个使用历史应
正如标题所说,我想知道我是否应该避免将 fluent nhibernate 用于生产代码,或者它是否足够成熟,可以“深入研究”? :) 最佳答案 FluentNHibernate API 尚未稳定下来
我正在尝试使用 Fluent NHibernate,我有几个问题。我发现缺少文档。 我知道 Fluent NHibernate/NHibernate 允许您自动生成数据库模式。人们通常只对测试/开发数
我正在使用 fluent-nhibernate 约定来映射我的实体: public class HasManyConvention : IHasManyConvention {
如何更改多列索引中的列顺序? IE: mapping.References(x => x.SomeReference).SetAttribute("index", "IX_index"); mappi
我需要像下面的代码一样创建一个外键: Create.ForeignKey().FromTable("TCGDocFiscalOpMedItem").ForeignColumn("IDCabecalho
我正在使用 Sharp 架构,并且在许多情况下都在实体中使用了值对象。这是一个明显的简单示例: public class Person : Entity { protected Person(
我是一名优秀的程序员,十分优秀!