Tag: orm

用于Oracle INTERVAL DAY TO SECOND数据类型的NHibernate映射

我挑战我的一位同事的问题并非如此,而是由DBA提出的。 我们在其中一个对象上有一个TimeSpan属性,该属性需要保留。 是的,您可以只从对象的Start和End DateTime属性推断出值,但DBA坚持要将此值保存在数据库表中。 因此,DBA选择保存该值的Oracle数据类型是INTERVAL DAY(2)TO SECOND(6)。 Oracle.DataAccess中的相应类型是OracleDbType.InvervalDS,但是我无法找到与如何使用NHibernate进行映射相关的任何内容。 我们最终得到了这个解决方案 public class SomeTimeSpanTestClass { public virtual string TimeSpanTest { get; protected set; } public virtual TimeSpan ActualTimeSpan { get { // Need to do some formatting of TimeSpanTest before it can be parsed return TimeSpan.Parse(TimeSpanTest); } set { TimeSpanTest = string.Format(“{0}{1} {2}:{3}:{4}.{5}”, value.ToString().Contains(‘-‘) ? “-” : […]

小巧玲珑的简单映射

表: create table Documents (Id int, SomeText varchar(100), CustomerId int, CustomerName varchar(100) ) insert into Documents (Id, SomeText, CustomerId, CustomerName) select 1, ‘1’, 1, ‘Name1’ union all select 2, ‘2’, 2, ‘Name2’ 类别: public class Document { public int Id { get; set; } public string SomeText { get; set; } public Customer { get; […]

在Dapper中映射实体

我刚刚开始使用Dapper,我似乎没有找到像将数据映射到数据库中的表一样简单的东西: 我有一个存储过程: CREATE PROCEDURE [dbo].GetUserById (@UserId int) AS begin SELECT UserId,LastName,FirstName,EmailAddress FROM users WHERE UserID = @UserId end go 然后是一个实体: public class User { public int Id { get; set; } public string LastName { get; set; } public string FirstName { get; set; } public string Email { get; set; } } 我的代码中有一个精巧的查询: int […]

Dapper中间映射

在我之前的问题中略微更高级的映射:) 表: create table [Primary] ( Id int not null, CustomerId int not null, CustomerName varchar(60) not null, Date datetime default getdate(), constraint PK_Primary primary key (Id) ) create table Secondary( PrimaryId int not null, Id int not null, Date datetime default getdate(), constraint PK_Secondary primary key (PrimaryId, Id), constraint FK_Secondary_Primary foreign key (PrimaryId) references […]

NHibernate3查询与QueryOver

我注意到有两种方法可以创建对nhibernate的友好通用友好访问。 IQueryOver query= session.QueryOver().Where(criteria); 和 IQueryable query= session.Query().Where(criteria); 每个接口的实现。 IQueryOver : IQueryOver, IQueryOver 和 IQueryable : IEnumerable, IQueryable, IEnumerable IQueryable实现IEnumerable,因此支持您期望的所有LINQ友好的东西。 我正在倾向于这个实现,但是想知道是否有人知道QueryOver的目的是什么,你无法用Query完成?

为什么要使用Dapper? 任何人都可以评论Dapper Vs ADO.NET优点和缺点

我想了解一个人真的需要考虑使用Dapper的时间。 另外,我想了解比较Dapper Vs ADO.NET的优点和缺点

这里的每个人都跳上了ORM乐队的旅行车吗?

Microsoft Linq to SQL,Entity Framework(EF)和nHibernate等都提议将ORMS作为下一代数据映射技术,并声称它们轻量级,快速且简单。 例如刚刚在VS杂志上发表的这篇文章: http://visualstudiomagazine.com/features/article.aspx?editorialsid=2583 谁都对在项目中实施这些技术感到兴奋? 这些技术的创新在哪里使它们比以前的产品更加优秀?

如何从C#中的SQL查询结果中填充类?

我有一个这样的课: public class Product { public int ProductId { get; private set; } public int SupplierId { get; private set; } public string Name { get; private set; } public decimal Price { get; private set; } public int Stock { get; private set; } public int PendingStock { get; private set; } } 我可以从我的数据库中获取这些细节,如下所示: […]

使用扩展方法定义的查询进行unit testing

在我的项目中,我使用以下方法从数据库中查询数据: 使用可返回任何类型且不绑定到一种类型的通用存储库,即IRepository.Get而不是IRepository.Get 。 NHibernates ISession就是这样一个存储库的一个例子。 使用具有特定T IQueryable上的扩展方法来封装重复查询,例如 public static IQueryable ByInvoiceType(this IQueryable q, InvoiceType invoiceType) { return q.Where(x => x.InvoiceType == invoiceType); } 用法如下: var result = session.Query().ByInvoiceType(InvoiceType.NormalInvoice); 现在假设我有一个我要测试的公共方法使用此查询。 我想测试三种可能的情况: 查询返回0个发票 查询返回1张发票 查询返回多个发票 我现在的问题是:要嘲笑什么? 我不能模拟ByInvoiceType因为它是一个扩展方法,或者我可以吗? 我出于同样的原因甚至无法模拟Query 。

如何使用Oracle的Entity Framework支持强制使用pascal案例?

Oracle的entity framework支持使所有类名称都是大写并且带有下划线。 因此ORDER_ITEMS表在类名中变为ORDER_ITEMS。 但我想使用Pascal案例作为类名。 ORDER_ITEMS ==> OrderItems是通缉的。 如何更改默认命名规则?