从EF转移到流畅的NHibernate。内存泄漏,架构
下午好,我正在一个相当大的项目迁移到流利的Nhibernate,以与单声道一起使用.我的大部分关键功能都可以正常工作,但是我遇到了内存问题. 当前,此代码位于我的两个控制器中.这似乎并不是最佳的.但是我不确定要把它放在哪里. private static ISessionFactory CreateSessionFactory() { return Fluently.Configure() .Database(MySQLConfiguration.Standard.ConnectionString( c => c.FromConnectionStringWithKey("DashboardModels") )) .Mappings(m => m.FluentMappings.AddFromAssemblyOf()) .Mappings(m => m.Fluent
2 2024-01-17
编程技术问答社区
当基类是抽象的时候,如何在fluent nhibernate中实现每个具体类的表?
我有以下方案 public abstract class BaseClass { public virtual int Id {get; set}; public virtual string Name {get; set;} } public class FirstSubClass : BaseClass { //properties and behaviour here } public class SecondSubClass : BaseClass { //properties of SecondSubclass Here } public class ProcessStep { public virtual IList ContentElements {get; set;} } 用于映射,我使用了以下代码段: - this._sessionFactory =
被引用的DLL没有被复制到引用项目中
这个问题可能已经多次问过,也许我很擅长在这里使用搜索功能和Google一样,但是我还没有找到这个问题的答案. 我目前有两个项目,项目X,Project Y和Project Z(仅包含映射) 项目X是一个富有的nhibernate项目,它拥有我的SessionFactories和类似的东西.因此,这也是加载映射和事物的地方(这很重要,我怀疑这可能是我遇到的问题的全部原因) 现在,在项目X中,我引用了一个使用Microsoft.sqlserver.types.dll. 的程序集 项目y是一种使用项目X进行数据库连接的服务. 所有可能的限制在我的开发机上构建并完美地运行,但是当部署到我们的服务器时,它们无法运行(运行时错误).由于它指出的是失去的fluentnhibrenate组件,但事实并非如此. procmon.exe幸运地展示了试图加载Microsoft.sqlserver.types.dll的代码,因为该服务器未安装SQL Server(我的客户端都没
2 2024-01-08
编程技术问答社区
使用FluentNHibernate + SQLite与.NET4的问题?
i使用vs2010 .net3.5使用nhibernate和fluentnhibernate + sqlite运行WPF应用程序,所有这些应用程序都可以. 现在我想更改以使用.net4,但是这已经变成了一个比我期望的更痛苦的体验. var cfg = Fluently.Configure(). Database(SQLiteConfiguration.Standard.ShowSql().UsingFile("MyDb.db")). Mappings(m => m.FluentMappings.AddFromAssemblyOf()); _sessionFactory = cfg.BuildSessionFactory(); buildSessionFactory()调用引发了fluentConfigurationException的说法: 创建SessionFa
0 2024-01-07
编程技术问答社区
Fluent NHibernate和.NET 4的奇怪覆盖问题
我最近关于使用.NET 4-我解决了这个问题,但遇到了一个新问题. 摘要 我的主要问题(目前)是配置数据库.我正在关注 失败的代码: public static ISessionFactory CreateSessionFactory() { return Fluently.Configure() .Database(MsSqlConfiguration.MsSql2008.ConnectionString(c => c.FromConnectionStringWithKey("mssql"))) .Mappings(m => m.FluentMappings.AddFromAssemblyOf()) .ExposeConfiguration(cfg => new SchemaExport(cfg).Create(true, true)) .BuildSessionFactory();
2 2024-01-07
编程技术问答社区
在过滤器中使用时,NHibernate无法解析一对一映射的属性
好的,我让做一些真的很愚蠢的事情,但是我看不到它是什么. 我有以下查询: Recipes recipe = null; var q = session.QueryOver(() => recipe) .Where(p => p.Metadata.SkillCommon) .Where(p => !p.Hidden); Recipes模型具有称为Metadata的属性,该属性是RecipeMetadata模型的一对一映射.换句话说,每个食谱都有一个和只有一个配方.它像这样映射: HasOne(x => x.Metadata); 当我运行此查询时,我会得到例外: 在 nhibernate.dll 其他信息:无法解决属性:元数据:kitchenpc.db.models.recipes 如果我删除了Metadata的引用: var q = session.QueryOver(() => recipe
4 2024-01-07
编程技术问答社区
流利的nHibernate映射HasMany到无主键的实体/表
我遇到了最严重的麻烦,试图与没有主键的表支持的实体建立HasMany关系. ClassA具有CompositeId.为了避免在ClassB上缺乏primary key,我尝试在ClassB上创建CompositeId,该ClassB构成了表中的所有列.不管我尝试过什么,什么都没有用. 这些是我的课程和映射. public class ClassA { public virtual int a_1_id {get;set;} public virtual string a_2_id {get;set;} public virtual IList ClassBs { get; set; } public override int GetHashCode() { int hashCode = 0; hashCode = hashCode ^ a_1_id ^ a_2_id.GetHas
2 2024-01-07
编程技术问答社区
NHibernate/Fluent的一对一映射问题。外键不更新
摘要:父母和子班.父母和孩子之间的一对一关系.父母有一个FK属性,该属性引用了孩子的主要钥匙.代码如下: public class NHTestParent { public virtual Guid NHTestParentId { get; set; } public virtual Guid ChildId { get { return ChildRef.NHTestChildId; } set { } } public virtual string ParentName { get; set; } protected NHTestChild _childRef; public virtual NHTestChild ChildRef { get { if (_childRef == null)
2 2024-01-07
编程技术问答社区
NHibernate的父辈们保存了多余的sql更新执行。
我试图用子对象的集合来保存(插入)父对象,所有对象都是新的.我更喜欢手动指定要保存\更新的内容,以便我自己不使用任何级联保存在映射和齐平课程中.因此,我基本上保存了此对象图,例如: session.Save(Parent) foreach (var child in Parent.Childs) { session.Save(child); } session.Flush() 我希望此代码能插入父行,然后插入每个子行,但是nhibernate执行此SQL: INSERT INTO PARENT.... INSERT INTO CHILD .... UPDATE CHILD SET ParentId=@1 WHERE Id=@2 //What the point of update if ParentId was set in previous query 此更新语句绝对是不必要的,parentID已经在插入中正确设置了.我如何摆脱它?表现对我来说非常重要. 解
6 2024-01-07
编程技术问答社区
如何使用NHibernate ManyToMany与Join表的属性(列)(Fluent NHibernate)。
我有以下课程,我需要Nhibernate可以很好地玩.我该怎么做? public class Customer { public int ID { get; set; } public string Name {get;set;} } public class Product { public int ID { get; set; } public string Name {get;set;} } public class CustomerPricing { public int ID { get; set; } public decimal Price {get;set;} public Customer Customer { get; set; } public Product Product {get;set;} public datetime ExpiresOn { get; set; } public str
2 2024-01-07
编程技术问答社区
DDD模型的流畅NHibernate映射
我一直在尝试寻找解决我当前使用Fluent Nhibernate绘制DDD模型的问题的解决方案.如果有人可以将我朝着正确的方向放置. 基本上我有这个课程,我想映射: public class A : EntityObject { //assuming some other attributes have been mapped properly public virtual Location MyLocation { get; private set; } } public class Location : EntityObject { public virtual string Name { get; private set; } } public Class AMap : ClassMap { //???? How to map the Location } 从数据库POV中,从表" a到表"位置")没有直接关系.表" a
6 2024-01-07
编程技术问答社区
NHibernate流畅地配置会话/会话工厂的默认刷新模式
我正在使用fluentnhibrenate,并尝试将Environment.DefaultFlushMode配置为FlushMode.Commit 根据这个问题,应该有可能: 如何更改默认的flushmode以在C#?中提交 的确,确实添加了此功能这是我的使用方式: public ISessionFactory BootstrapSessionFactory() { return Fluently.Configure() .ExposeConfiguration(cfg => cfg.SetProperty(Environment.DefaultFlushMode, FlushMode.Commit.ToString())) .BuildSessionFactory(); } 根据fluentConfiguration的源代码 pub
6 2024-01-06
编程技术问答社区
NHibernate:无法成功设置懒惰加载
我有一个桌子父母和一个桌子孩子.孩子包含父桌的外国钥匙,建立了一对多的关系.这是我用流利的nhibernate定义的映射的一部分: public class ParentMap : ClassMap { public ParentMap() { WithTable("Parents"); Id(x => x.Id, "ParentID") .WithUnsavedValue(0) .GeneratedBy.Identity(); Map(x => x.Description, "Description"); HasMany(x => x.Childs) .LazyLoad() .WithKeyColumn("ParentID") .IsInverse() .AsSet();
4 2024-01-06
编程技术问答社区
如何使用nhibernate更新主键?
我的一个表的主要键是字符串.该字符串是我想在某个时候更新的代码.我该如何在nhibernate中做到这一点. 请注意,有一个与此列连接的外键,我需要级联更新到. 为了讨论,让我们假设我的映射如下 public class Code { public virtual string Id { get; set; } public virtual string Name { get; set; } public class CodeMap : ClassMap { public CodeMap() { Table("BusinessCode"); Id(x => x.Id, "Id"); Map(x => x.Name, "Name").Nullable(); } } } public class
4 2024-01-06
编程技术问答社区
NHibernate Postgresql日期时间到时间的转换
我正在使用流利的nhibernate来配置我的映射时,在读取数据时,所有内容都有效,但是当试图插入或更新具有PostgreSQL类型的记录时,我会收到错误消息 "ERROR: 42804: column \"run_time\" is of type time with time zone but expression is of type timestamp without time zone" 看起来NHIBERNATE可能会因为从 postgresqlesql "> postgresqlsql ">和c#datatypes dateTime映射到. 有几个dbtypes. 我还尝试了从Iusertype指定此列的自定义类型 public override void NullSafeSet(IDbCommand cmd, object value, int index) { var obj = (DateTime)value; NHibernate
2 2024-01-06
编程技术问答社区
n休眠欧元符号€改变为字符¿。
我已经尝试使用nhibernate和fluentnhibernate在数据库Oracle 11g中保存欧元符号€. 我已经检查了来自Nhibernate的日志,并查看生成的SQL语句: UPDATE CURRENCY SET DESCRIPTION = 'Euro', SYMBOL = '€', WHERE ID = 63 从表CURRENCY执行查询时,列SYMBOL返回¿ 我尝试使用AnsiString更改列SYMBOL的fluentnhibrenate映射,例如: Map((x) => x.Symbol).Column("SYMBOL").CustomType("AnsiString").Not.Nullable(); 但是它不起作用. 我尝试了NVARCHAR2的列类型,然后更改Fluentnhibrnate映射: Map((x) => x.Symbol).Column("SYMBOL").CustomSqlTyp
2 2024-01-06
编程技术问答社区
流利的NHibernate。ManyToMany的自引用映射
我需要帮助为这种情况创建正确的流利NH映射: 类别可以是一个或多个类别的孩子.因此,导致该实体: public class Category : Entity, IAggregateRoot { [EntitySignature] public virtual string Name { get; set; } public virtual IList Parents { get; set; } public virtual IList Children { get; set; } public virtual IList Products { get; set; } public Category() { Parents = new List(); Children = new List
0 2024-01-06
编程技术问答社区
流利的NHibernate映射IList<Point>作为值的单列
我有这个课: public class MyEntity { public virtual int Id { get; set; } public virtual IList Vectors { get; set; } } 如何将Vectors映射到流利的nhibernate中,将其映射到单列(AS值)?我在想: public class Vectors : ISerializable { public IList Vectors { get; set; } /* Here goes ISerializable implementation */ } public class MyEntity { public virtual int Id { get; set; } public virtual Vectors Vectors { get; set; } } 是否可以像这样映射Vecto
4 2024-01-06
编程技术问答社区
Fluent Nhibernate - 如何指定表名
我刚刚开始学习Nhibernate和Fluent Nhibernate.创建映射类时,我想指定表名. 应用程序中的实体名称为"客户词",但是在Oracle数据库中,表名是" Customer_orders". 我从谷歌搜索中学到的,我可以使用" withtable"指定数据库表名称. 我不确定如何使用它以及VS2008找不到该方法的位置. 谢谢 解决方案 WithTable为1.0释放而重命名为Table.在其他解决方案 public class CustomerOrdersMap : IAutoMappingOverride { public void Override(AutoMapping mapping) { mapping.Table("CUSTOMER_ORDERS"); } }
2 2024-01-06
编程技术问答社区