标签: automapping

当基类在流畅的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<BaseClass> ContentElements {get; set;}  
}
Run Code Online (Sandbox Code Playgroud)

对于映射我使用了以下代码片段: -

this._sessionFactory =
                          Fluently.Configure().Database(SQLiteConfiguration.Standard
                          .ConnectionString(@"Data Source=SqliteTestSqlDataAccess.s3db;    Version=3; New=True; Pooling=True; Max Pool Size=1;"))
                          .Mappings(m => m.AutoMappings.Add(AutoMap.Assembly(assemblyWithDomainClasses).Conventions.Add(DefaultCascade.All())))
                          .ExposeConfiguration(BuildSchema)
                          .BuildSessionFactory();
Run Code Online (Sandbox Code Playgroud)

默认情况下,fluent将忽略作为BaseClass的抽象基类.但是在ProcessStep类中有返回IList的属性ContentElements ,我得到一个异常: - NHibernate.MappingException:关联引用未映射的类:BaseClass

如果我使用IncludeBase(typeof(BaseClass))包含基类,那么它工作正常,但它为BaseClass和Derived类创建一个表,并且记录与FK-PK关系(每个子类的表 …

nhibernate abstract-class fluent-nhibernate automapping table-per-class

9
推荐指数
1
解决办法
2811
查看次数

非空字段的流畅Nhibernate Automap约定

可能有人帮忙,我如何指示automap对列不为null?

public class Paper : Entity
{
    public Paper() { }

            [DomainSignature]
            [NotNull, NotEmpty]
            public virtual string ReferenceNumber { get; set; }

            [NotNull]
            public virtual Int32 SessionWeek { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

但我得到以下内容:

 <column name="SessionWeek"/>
Run Code Online (Sandbox Code Playgroud)

我知道可以使用流利地图完成.但我想以自动映射的方式知道它.

convention nullable fluent-nhibernate automapping

7
推荐指数
1
解决办法
5310
查看次数

流畅的NHibernate:混合自动映射和手动映射

如果使用Fluent NHibernate,是否可以自动化大多数类,但是指定应该使用常规流畅的API映射几个特定的​​类而不是自动化?如果是这样,有人能指出一些示例代码,说明如何做到这一点吗?

谢谢!

nhibernate fluent automapping

7
推荐指数
1
解决办法
1842
查看次数

流畅的NHibernate Automapping与抽象基类

鉴于以下类别:

public class Address : Place
{
    public virtual string Street { get; set; }
    public virtual int Number  { get; set; }


    public override string WhereAmI
    {
        get { string.Format("{0} {1}", Street , Number); }
    }
}
public abstract class Place : DomainEntity
{
    public abstract string WhereAmI { get; }
}
Run Code Online (Sandbox Code Playgroud)

当我使用此映射时:

var autoMap = AutoMap.AssemblyOf<Party>()
            .Override<Place>(map => map.IgnoreProperty(p => p.WhereAmI))
            .Override<Address>(map => map.IgnoreProperty(p => p.WhereAmI))
            .Where(type => type.Namespace != null && type.Namespace.Contains("Models"));
Run Code Online (Sandbox Code Playgroud)

我仍然得到错误:无法在"地址"类中找到属性'WhereAmI'的setter

我做的事情:

  • 当我从基类"地址"中删除属性时,它的工作原理.
  • 当我使用.OverrideAll(map …

nhibernate configuration abstract-class fluent automapping

7
推荐指数
1
解决办法
1463
查看次数

有一个流畅的NHibernate自动化示例项目"正常"吗?

我本周刚开始关注NHibernate,并希望在我当前的项目中使用Automapping方法.

我正在使用Fluent NHibernate 1.0.0.594,这是我几天前下载的.

我在NHibernate源代码中找到了Examples.FirstProject,它使用了旧式的实体映射.作为NHibernate的介绍,这对我来说非常有价值,因为它可以直接使用.

但是,我一直无法为AutoMapping找到类似的独立工作示例.Peter Bromberg 发布了一个看起来不错的样本,但它似乎缺少一些重要的组件.他一直在帮助我尝试解决问题,但它还没有奏效.

接下来,我尝试修改Examples.FirstProject程序以使用自动映射,但是立即遇到了抛出异常的问题,而我目前的经验水平并不理解.

任何人都可以指向一个已知使用最新的NHibernate代码的Automapping示例项目吗?

fluent-nhibernate automapping fluent-nhibernate-mapping

6
推荐指数
1
解决办法
3619
查看次数

如何在实体中使用Fluent NHibernate Automapping和多个相同类型的列表?

似乎NHibernate不能自动化实体中给定类型的多个IList.

考虑以下两个实体(基于Fluent NHibernate源代码中包含的Examples.FirstProject示例代码).

public class Employee
{
    public virtual int Id { get; private set; }
    public virtual string FirstName { get; set; }
    public virtual string LastName { get; set; }
}

public class Store
{
    public virtual int Id { get; private set; }
    public virtual IList<Employee> Staff { get; set; }
    public virtual IList<Employee> Managers { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

这似乎是一个完全有效的对象模型 - 每个商店都有几名员工和几名经理员工.

但是当我自动化时,Staff和Managers列表存储在Employee表中,所有这些列表都具有相同的外键.

Employee Table

Id FirstName LastName Store_id 
3  Daisy     Harrison   1 
4  Jack      Torrance …
Run Code Online (Sandbox Code Playgroud)

nhibernate nhibernate-mapping fluent-nhibernate automapping

6
推荐指数
1
解决办法
2076
查看次数

价值注入:Dto到域模型(NHibernate)

我正在使用ValueInjecter将属性从域模型映射到通过服务层提供的DTO.有问题的服务也接受更新...因此传入更新的DTO,然后将其注入域对象并保存.

    // Domain
    public class Member 
    {
      public Country Country { get; set; }
    }

    public class Country 
    {
      public string Code { get; set; }
      public string Name { get; set; }
    }

    //Dto
    public class MemberDto 
    {
       public string CountryCode { get; set; }
    }

    //Transformation Method attempt 1
    public Member InjectFromDto (MemberDto dto, Member source)
    {
       source = source.InjectFrom<UnflatLoopValueInjection>(dto);
       return source;
    }
Run Code Online (Sandbox Code Playgroud)

现在所有上面的代码都更新了Property Member.Country.Code,这显然不是我需要它做的.

所以从文档中,我想我需要创建一个覆盖并得到这个:

public class CountryLookup: UnflatLoopValueInjection<string, Country>
    {
        protected override Country SetValue(string …
Run Code Online (Sandbox Code Playgroud)

nhibernate dto automapping valueinjecter

6
推荐指数
1
解决办法
2107
查看次数

如何使用Fluent NHibernate自动化一组组件?

我的所有实体和值对象都实现了标记接口IEntityIValueObject.我把它们设置为像这样的组件:

public override bool IsComponent(Type type)
{
    return typeof(IValueObject).IsAssignableFrom(type);
}

public override bool ShouldMap(Type type)
{
    return typeof(IEntity).IsAssignableFrom(type) || typeof(IValueObject).IsAssignableFrom(type);
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,这似乎不允许将具有值对象集合的实体自动化为组件集合.例如:

public class MyEntity : IEntity
{
    public IList<MyValueObject> Objects { get; set; }
}

public class MyValueObject : IValueObject
{
    public string Name { get; set; }
    public string Value { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法定义一个约定,这样,只要IEntityIList一个类型实现IValueObject,它就像我指定的那样被映射:

HasMany(x => x.Objects)
    .Component(x => { 
        x.Map(m => m.Name); 
        x.Map(m => m.Value); …
Run Code Online (Sandbox Code Playgroud)

nhibernate components fluent-nhibernate automapping value-objects

6
推荐指数
1
解决办法
760
查看次数

Jquery发布到带有字典参数的Action

我感觉dejavu,但我找不到答案:我有一个对象数组,在检查jQ $ .post调用时需要看起来像这样:

limiter[0].Key
limiter[0].Value
Run Code Online (Sandbox Code Playgroud)

以便它在动作中映射

public ActionResult SomeAction(Dictionary<Guid, string> dictionary) { }
Run Code Online (Sandbox Code Playgroud)

但是,这个javascript:

// Some Guid and Some Value
var param = [ { 'Key' : '00000000-0000-00000-000000', 'Value': 'someValue' } ];

$.post('/SomeController/SomeAction/',
       {
       dictionary: limiter,
       otherPostData: data
       },
       function(data) {
          callback(data);
       }
)
Run Code Online (Sandbox Code Playgroud)

在用firebug检查时产生这个:

limiter[0][Key] = someKey // Guid Value
limiter[0][Value] = someValue
Run Code Online (Sandbox Code Playgroud)

这是在jq 1.4.2.我似乎记得你需要设置一些标志来在jQ中以不同的方式渲染json.这会响铃吗?

javascript asp.net-mvc jquery automapping asp.net-mvc-2

6
推荐指数
2
解决办法
1万
查看次数

使用Fluent nhibernate自动进行继承

我有这种情况:

public namespace ANamespace
{
    public abstract class ABase:IABase
    {
        //properties
    }

    public abstract class A : ABase
    {
        //properties
    }

    public class A1 : A
    {
        //properties
    }

    public class A2 : A
    {
        //properties
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我使用此映射代码:

AutoMap
   .AssemblyOf<ABase>()
   .Where(e => e.Namespace == "ANamespace")
   .IncludeBase<A>().IgnoreBase<ABase>();
Run Code Online (Sandbox Code Playgroud)

仅创建一个表(具有ABase和A属性).如果我删除IncludeBase(),则创建A1和A2(包含所有属性).

AutoMap
   .AssemblyOf<ABase>()
   .Where(e => e.Namespace == "ANamespace")
   .IgnoreBase<ABase>();
Run Code Online (Sandbox Code Playgroud)

如何编写映射以在我的数据库中为类A(具有所有A和ABase属性),A1和A2(具有特定属性)而不是ABase类创建表?

c# nhibernate inheritance automapping

6
推荐指数
1
解决办法
1138
查看次数