标签: fluent

流畅的nhibernate命名查询,而不使用地图的hbm文件

我需要创建一个命名查询,并将其与其中一个地图一起使用,我目前已将其定义为流畅的地图.

是否可以继续使用流畅的地图,并能够在代码中动态创建命名查询?或者,切换到hbm地图唯一的选择?

nhibernate fluent map named-query

8
推荐指数
1
解决办法
4116
查看次数

使用Apache HttpClient的Facade时,是否可以同时获取状态代码和正文内容?

在Java中使用Apache的HttpClient Fluent Facade中的一些示例代码供开发人员扩展.他们真的很喜欢流利的外观,能够打电话:

this.body = Request.Get(uri.build()).execute().returnContent().asString();
Run Code Online (Sandbox Code Playgroud)

另外,我可以通过调用获取状态代码:

this.statusCode = Request.Get(uri.build()).execute().returnResponse().getStatusLine().getStatusCode();
Run Code Online (Sandbox Code Playgroud)

不幸的是,有几个实例我需要除了正文之外的状态代码.根据这个问题,我看到我可以让他们学习HttpClient对象 -

HttpResponse response = client.execute(httpGet);
String body = handler.handleResponse(response);
int code = response.getStatusLine().getStatusCode();
Run Code Online (Sandbox Code Playgroud)

但是,这意味着初始化HttpClient对象并且似乎拒绝了Fluent接口和Request.Get(或Post)语法.有没有办法同时获取状态代码和正文而不会丢失Fluent语法并且不进行两次离散调用?

java fluent apache-httpclient-4.x

8
推荐指数
1
解决办法
2966
查看次数

具有多个父属性的EF6自引用表,单个子集合

我有一个引用自己的表,但我正在努力获得我想要的映射.我希望能够将儿童定义为拥有母亲,父亲和/或监护人的特定人的集合.守护者可能是父亲或母亲.

我希望能够看到人们被列入名单的人们可以浏览的树状图; 用户可以扩展一个人的节点以显示该人的所有孩子,而不管儿童定义的关系(母亲,父亲或监护人).

public partial class Person
{
    [Key]
    public int ID { get; set; }

    [StringLength(100)]
    public string Name { get; set; }


    public int? GuardianID { get; set; }

    [Column("MotherID")]
    public int? MotherID { get; set; }


    [Column("FatherID")]
    public int? FatherID { get; set; }

    [ForeignKey("MotherID")]
    public virtual tblPerson Mother { get; set; }

    [ForeignKey("FatherID")]
    public virtual tblPerson Father { get; set; }

    [ForeignKey("GuardianID")]
    public virtual tblPerson Guardian { get; set; }

    [InverseProperty("Guardian")]
    [InverseProperty("Father")]
    [InverseProperty("Mother")]
    public virtual IEnumerable<tblPerson> …
Run Code Online (Sandbox Code Playgroud)

entity-framework fluent data-annotations self-referencing-table

8
推荐指数
1
解决办法
683
查看次数

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

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

谢谢!

nhibernate fluent automapping

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

更好的正则表达式语法思想

我需要一些帮助才能完成关于正则表达式的想法.

介绍

关于SE上正则表达式的更好语法有一个问题,但我认为我不会使用流畅的语法.这对新手来说肯定不错,但是如果是复杂的正则表达式,你会用一整页稍微好一点的胡言乱语来代替一行乱码.我喜欢Martin Fowler方法,其中正则表达式由较小的部分组成.他的解决方案是可读的,但手工制作; 他提出了一种聪明的方法来构建复杂的正则表达式而不是支持它的类.

我正试图用类似的东西来上课(首先看他的例子)

final MyPattern pattern = MyPattern.builder()
.caseInsensitive()
.define("numberOfPoints", "\\d+")
.define("numberOfNights", "\\d+")
.define("hotelName", ".*")
.define(' ', "\\s+")
.build("score `numberOfPoints` for `numberOfNights` nights? at `hotelName`");

MyMatcher m = pattern.matcher("Score 400 FOR 2 nights at Minas Tirith Airport");
System.out.println(m.group("numberOfPoints")); // prints 400
Run Code Online (Sandbox Code Playgroud)

其中fluent语法用于组合扩展的regex,如下所示:

  • 定义命名模式并通过封闭反引号来使用它们
    • `name` 创建一个命名组
      • 助记符:shell捕获反引号中包含的命令的结果
    • `:name` 创建一个非捕获组
      • 助记符:类似于(?:......)
    • `-name` 创建一个反向引用
      • 助记符:短划线将其连接到上一个匹配项
  • 除非引用,否则重新定义个别角色并在任何地方使用它
    • 这里只允许一些字符(例如~ @#%")"
      • 重新定义+(将是非常混乱,所以这是不允许的
      • 在上面的例子中,重新定义空间意味着任何间距是非常自然的
      • 重新定义一个角色可以使图案更紧凑,除非过度使用,这是好的
      • 例如,使用类似define('#', …

java regex fluent

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

流畅的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
查看次数

Fluent惯例是否会破坏延迟加载?(uNhAddIns)

我在WPF应用程序中有一个简单的实体类,基本上如下所示:

public class Customer : MyBaseEntityClass
{
    private IList<Order> _Orders;
    public virtual IList<Order> Orders
    {
        get { return this._Orders; }
        set {this._Orders = new ObservableCollection<Order>(value);}
    }
}
Run Code Online (Sandbox Code Playgroud)

我还在离线实用程序中使用Fluent自动化程序来创建NHibernate配置文件,然后在运行时加载该文件.这一切都运行良好,但由于我没有将原始集合传递回NHibernate这一事实有明显的性能影响,所以我试图添加一个约定来让NHibernate为我创建集合:

public class ObservableListConvention : ICollectionConvention
{
    public void Apply(ICollectionInstance instance)
    {
        Type collectionType =
            typeof(uNhAddIns.WPF.Collections.Types.ObservableListType<>)
            .MakeGenericType(instance.ChildType);
        instance.CollectionType(collectionType);
    }
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我正在使用其中一个uNhAddIns集合,我理解它应该为约定和INotification更改提供支持,但出于某种原因,这样做似乎打破了延迟加载.如果我加载这样的自定义记录...

var result = this.Session.Get<Customer>(id);
Run Code Online (Sandbox Code Playgroud)

...然后Orders字段确实被分配了PersistentObservableGenericList类型的实例,但其EntityId和EntityName字段为null,并且尝试扩展订单会导致可怕的"非法访问加载集合"消息.

任何人都可以告诉我我做错了什么和/或我需要做些什么才能让它发挥作用?我是否正确假设原始代理对象(通常包含延迟加载Orders成员所需的客户ID)正在被未跟踪正确对象的uNhAddIns集合项替换?

更新:我已经创建了一个演示此问题的测试项目,它没有直接引用uNhAddins项目,但是手动添加了集合类.它应该非常简单,但它基本上是从域创建数据库,添加带有子列表的记录,然后尝试使用集合类作为子列表的实现将其加载回另一个会话.由于延迟加载失败而抛出断言.

nhibernate wpf orm fluent unhaddins

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

如何在LINQ中将两个查询联合到流畅的NHibernate?

如何在LINQ中将两个查询联合到流畅的NHibernate?

它们返回相同的类型,但查询位于不同的实体上:

IQueryable<Event> eventQuery1 = session.Query<Event>().Where(e => e.EventType.Id == eventTypeId);

IQueryable<Event> eventQuery2 = session.Query<Nomination>().Select(n => n.Event).Distinct();
Run Code Online (Sandbox Code Playgroud)

我尝试了Union()和Concat()方法但是它们失败了:

eventQuery1 = eventQuery1.Union(eventQuery2);

The UnionResultOperator result operator is not current supported
Run Code Online (Sandbox Code Playgroud)

我不想从数据库加载对象然后应用concat,我希望在从数据库返回对象之前完成它,以便我可以在union的最终列表中应用一些Fetches.

sql linq nhibernate union fluent

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

Neo4j Cypher查询生成器

我一直试图遇到Neo4j的查询语言Cypher的查询构建器,理想情况下使用流畅的API.我没有找到太多,并决定花一些时间自己建一个.

到目前为止,结果是Cypher 1.9规范的流畅的API查询构建器.

在发布代码之前,我想使用StackOverflow开始讨论,看看有什么想法.

这是一个演示查询,您希望使用Cypher发送给Neo4j.

向我展示John知道谁知道谷歌软件工程师的所有人(Google公司代码假定为12345).John和将他连接到Google员工的人之间的关系强度至少应为3(假设范围为1-5).返回John的所有关系以及他们在Google上认识的人,包括这些人之间的关系.按约翰的连接名称按升序对结果进行排序,然后按关系强度按降序排序.

使用Fluent-Cypher:

Cypher
    .on(Node.named("john").with(Index.named("PERSON_NAMES").match(Key.named("name").is("John"))))
    .on(Node.named("google").with(Id.is(12345)))

    .match(Connection.named("rel1").andType("KNOWS").between("john").and("middle"))
    .match(Connection.named("rel2").andType("KNOWS").between("middle").and("googleEmployee"))
    .match(Connection.withType("WORKS_AT").from("googleEmployee").to("google"))

    .where(Are.allOfTheseTrue(Column.named("rel1.STRENGTH").isGreaterThanOrEqualTo(3)
            .and(Column.named("googleEmployee.TITLE").isEqualTo("Software Engineer"))))

    .returns(Columns.named("rel1", "middle", "rel2", "googleEmployee"))
    .orderBy(Asc.column("middle.NAME"), Desc.column("rel1.STRENGTH"))
Run Code Online (Sandbox Code Playgroud)

这会产生以下查询:

START john=node:PERSON_NAMES(name='John'),google=node(12345) MATCH john-[rel1:KNOWS]-middle,middle-[rel2:KNOWS]-googleEmployee,googleEmployee-[:WORKS_AT]->google WHERE ((rel1.STRENGTH >= '3' AND googleEmployee.TITLE = 'Software Engineer')) RETURN rel1,middle,rel2,googleEmployee ORDER BY middle.NAME ASC,rel1.STRENGTH DESC
Run Code Online (Sandbox Code Playgroud)

dsl fluent query-builder neo4j cypher

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

Laravel 4查询生成器不支持"from"子句中的多个表

有没有办法在Laravel 4中生成SQL查询(使用查询生成器),它支持"from"子句中的多个表,而不使用连接?

我想做这样的事情:

SELECT * FROM table_1 as t1, table_1 as t2...
Run Code Online (Sandbox Code Playgroud)

这可以在不使用连接的情况下完成吗?我注意到from()方法在表名/别名之后删除了任何东西:

->from('table_1 as t1, table_1 as t2')
Run Code Online (Sandbox Code Playgroud)

成为(是的,最后用逗号):

table_1 as t1,
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助.

sql orm fluent laravel

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