Tag: fluent interface

设计Fluent界面方法

我正在尝试编写DSL 我有返回字符串的方法,但如果我想组合字符串,我需要使用+符号,但我想一起调用这些方法,但我不确定如何实现它 我现在有方法如 MyStaticClass.Root() MyStaticClass.And() MyStaticClass.AnyInt()返回字符串的MyStaticClass.Root() MyStaticClass.And() MyStaticClass.AnyInt() 我希望能够做到 Root().And().AnyInt()导致字符串

具有可选要求的EF Code First + Fluent关系的多重约束违规?

出于某种原因,我让我在EF 6项目上做了一段时间,我会尽量避免命名外键。 我定义了大部分模型而没有逐步测试它,因此我遇到了多样性和不完整的Fluent API定义问题: 来自’User_InternalAuth’AssociationSet的关系处于’已删除’状态。 给定多重约束,相应的’User_InternalAuth_Target’也必须处于’已删除’状态。 在一种情况下,这是代码: nModelBuilder.Entity() .HasOptional(u => u.InternalAuth) .WithRequired(a => a.User) .WillCascadeOnDelete(true); 我的理解是它说: 实体User 具有InternalAuth类型的可选属性InternalAuth 另一方面, InternalAuth有一个必需的属性User ,所以所有的 InternalAuth都有User但是User可能有也可能没有`InternalAuth。 如果User被删除,那么他的InternalAuth也会被删除(这是否会覆盖处理像nullables这样的选项的可选行为?) 但是当我尝试删除User我收到一个关于InternalAuth和User之间某种关联的多样性的例外。 如果EF了解关系的多样性,它是否有一种方法可以为它提供一个唯一的列名,那么有一个规范的命名约定? 如果是这样,您是否真的需要通过注释模型或通过Fluent API明确定义外键? 如果没有,我应该继续努力避免它,这是值得的还是可取的? (我正在考虑迁移数据模型,数据库管理,任何EF怪癖) 为什么尝试删除上述关系会违反多重约束? 还需要知道什么?

流畅的entity framework映射

有没有办法像Fluent NHibernate一样为NHibernate执行Fluent EF Mapping?

使用Castle Fluent界面注册拦截器

我试图通过拦截器实现nhibernate事务处理 ,并无法弄清楚如何通过流畅的机制注册接口。 我看到了 Component.For().Interceptors 但不知道如何使用它。 有人可以帮我吗? 这个例子似乎有点复杂。

流畅的接口实现

为了使我的代码更有条理,我决定使用流畅的接口; 然而,通过阅读可用的教程,我找到了很多方法来实现这种流畅性,其中我找到了一个主题,他说创建Fluent Interface我们应该使用Interfaces ,但他没有提供任何好的细节来实现它。 这是我如何实现Fluent API 码 public class Person { public string Name { get; private set; } public int Age { get; private set; } public static Person CreateNew() { return new Person(); } public Person WithName(string name) { Name = name; return this; } public Person WithAge(int age) { Age = age; […]

具有动态function构造的C#Fluent API

我正在为创建一个具有流畅API的小型SQL库而烦恼,并希望做到这样的事情: var person = connection.GetOne(“select * from [Person] where [Id] = 1”) .WithMany(“select * from [Pet] where [PersonId] = 1”) .WithMany(“select * from [Address] where [PersonId] = 1]”) .Build((person, pets, addresses) => { person.Pets = pets; person.Addresses = addresses; return person; }); 我之前已经构建了大量流畅的API,但所有这些API都变得更加简单,并且不依赖于generics。 我的问题是具体如何实现Build()结束函数。 我不确定它是否可能(看起来不像它但可能使用Expression是关键?)但是如何跟踪调用更高链方法中指定的generics类型(例如GetOne ( ),WithMany ())这样当调用.Build()时,所需的Func 是正确的类型? 在上面的示例中,我希望Func 为Func <Person,IEnumerable ,IEnumerable >,以便开发人员可以以他们需要的任何方式构造根项(person) – […]

在流畅的界面中实现条件

我一直在尝试为我的系统中的一组规则实现流畅的界面。 我想要完成的是这个 TicketRules .RequireValidation() .When(quartType => quartType == QuartType.Before).TotalMilageIs(64) .When(quartType => quartType == QuartType.After).TotalMilageIs(128); 但是,我无法实现有条件的方式。 目前,我需要在此片段中调用When()两次: rules.When(param => param.Remarque == “Test”).TotalMilageIs(100); rules.When(param => param.Remarque == “Other”).TotalMilageIs(50); var params1 = new AddTicketParameters() { Remarque = “Test” }; var params2 = new AddTicketParameters() { Remarque = “Other” }; rules.ExecuteWith(params1); Assert.That(ticket.TotalMilage, Is.EqualTo(100)); rules.ExecuteWith(params2); Assert.That(ticket.TotalMilage, Is.EqualTo(50)); 我的TicketRules类看起来像这样: [EditorBrowsable(EditorBrowsableState.Never)] public […]

entity framework代码优先 – 具有连接/链接表的一对多

是否可以与Code First创建一对多关系,在它们之间使用链接/连接表? public class Foo { public int FooId { get; set; } // … public int? BarId { get; set; } public virtual Bar Bar { get; set; } } public class Bar { public int BarId { get; set; } // … public virtual ICollection Foos { get; set; } } 我希望这个映射如下: TABLE […]

inheritanceEF代码优先

我有一个基础对象,我不想在数据库中作为一个实体映射,我只希望将属性添加到在数据库中映射的对象: 没有映射的对象(不知道它是否重要但是baseobject在另一个程序集中): public class BaseObject { public virtual string Prop1 { get; set; } public virtual string Prop2 { get; set; } } 映射对象: public class ChildObject : BaseObject { public virtual string Prop3 { get; set; } public virtual string Prop4 { get; set; } public virtual string Prop5 { get; set; } } […]

EF Code First阻止使用Fluent API进行属性映射

我有一个Product类和一个复杂类型的AddressDetails public class Product { public Guid Id { get; set; } public AddressDetails AddressDetails { get; set; } } public class AddressDetails { public string City { get; set; } public string Country { get; set; } // other properties } 是否可以防止从Product类中的AddressDetails映射“Country”属性? (因为我永远不需要它用于Product类) 像这样的东西 Property(p => p.AddressDetails.Country).Ignore();