标签: micro-orm

如何使用Dapper从数据库生成模型?

我来自PetaPoco营地.PetaPoco有一个T4模板,可以从数据库中生成模型.Dapper有类似的东西吗?

我使用NuGet安装了Dapper并添加了SqlHelper.cs,但是我没有找到任何从数据库生成模型的东西.

visual-studio-2010 dapper micro-orm

13
推荐指数
5
解决办法
2万
查看次数

如何使用Dapper.Rainbow(或可选地使用Dapper.Contrib)为具有导航属性的对象插入和更新

我刚开始研究Dapper.我正在测试它并能够做基本的CRUD,我的基本意思是在这个结构的类上工作:

public class Product {
    public int Id {get;set;}
    public string Name {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

现在我正在寻找能够更容易地进行插入和更新的东西,并找到了Dapper.Rainbow.我检查了它,并能够使用它来获取和插入对象,如上所述.我的问题是,当Product有导航属性时,我不能在该字段上插入.所以,如果我有这个:

public class Product {
    public int Id {get;set;}
    public string Name {get;set;}
    public ProductCategory Category {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

我将无法做到这一点:

// connection is a valid and opened connection            
 var db = TestDatabase.Init(connection , 300);
 var newId = db.Products.Insert(newProduct);
Run Code Online (Sandbox Code Playgroud)

因为这个原因:

The member Category of type ProductCategory  cannot be used as a parameter value
Run Code Online (Sandbox Code Playgroud)

如果我Category用type 替换int(数据库中的相同数据类型),则可以解决该问题.但是,如果我这样做,我将无法使用其类别信息查询产品,而不仅仅是(类别)ID.

因此,如果不使用原始Dapper,如何使用具有导航属性的类进行插入和更新?我希望我可以执行以下操作并告诉Dapper.Rainbow Category在插入或更新时忽略.

public class Product { …
Run Code Online (Sandbox Code Playgroud)

orm dapper dapper-rainbow micro-orm

13
推荐指数
1
解决办法
4949
查看次数

使用Dapper解析字符串错误

我有下表,删节:

CREATE TABLE [dbo].[TERMINAL] (
    [TERM_CODEID]    SMALLINT     NOT NULL,
    [TERM_ACTIVE]    SMALLINT     NOT NULL,
    [TERM_NAME]      VARCHAR (30) NOT NULL,
    [TERM_SLA]       CHAR (8)     NOT NULL,
    [TERM_SERIAL]    VARCHAR (8)  NULL,
    [TERM_VERSION]   VARCHAR (8)  NULL,

    [TERM_STATUS]    INT          NULL,
)
Run Code Online (Sandbox Code Playgroud)

当我尝试以下Dapper代码 - 我是一个完整的Dapper新手,昨天发现它 - 我收到一个错误:

using (var conn = new SqlConnection("data source=ourServer; initial catalog=ourDb;user id=sa;password=ourPassword;"))
{
    conn.Open();
    var terms = conn.Query<Terminal>("select * from TERMINAL");
}
Run Code Online (Sandbox Code Playgroud)

错误是:

解析第3列时出错(TERM_SLA = 01010B01 - String)

我没有理由为什么甚至不得不"解析"一个字符串,更不用说在这样做时遇到错误.可能导致这种情况的原因>

c# database orm dapper micro-orm

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

PetaPoco - 多个结果集支持

我的工作最近开始使用PetaPoco,虽然很棒但我错过了Dapper允许将单个查询中的多个结果网格处理成pocos的功能.

结果我写了我自己的实现PetaPoco- 如下所示 - 但是有没有人自己编写并且小心分享它?

我想可能还有其他人错过了这个功能.

c# petapoco micro-orm

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

在Dapper中管理与非缓冲查询的连接

我最近开始使用Dapper,一切看起来都很简单但有一件事让我感到困惑:连接管理.

根据文件:

Dapper不管理连接的生命周期,它假定它获得的连接是打开的并且没有现有的数据引用器枚举(除非启用了MARS)

鉴于此,我开始在我的存储库方法的实现中执行此操作:

using (var db = new SqliteConnection(connectionString)) {
    // call Dapper methods here
}
Run Code Online (Sandbox Code Playgroud)

然后我遇到了一个包含大量记录的表,所以我IEnumerable<T>通过传递buffered: falseQuery<>方法返回一个,当我开始枚举前端的枚举时,繁荣一个例外,说连接被关闭并处理了预期因为我用前面的使用块包装我的调用.

问题:最好的方法来解决这个问题?
附带问题:我管理连接的方式是首选方式吗?

.net c# ado.net dapper micro-orm

9
推荐指数
2
解决办法
4492
查看次数

为什么Azure数据库在事务中表现更好

我们决定对Azure数据库使用微操作.由于我们的业务只需要"插入"和"选择",我们决定禁止所有代码管理SqlTransaction(没有数据的并发问题).

然后,我们注意到我们的Azure数据库实例反应非常缓慢." rpc completed "事件发生的延迟是运行简单sql语句所需时间的数百倍.

接下来,我们使用EF6对代码进行基准测试,我们发现服务器响应非常快.当EF6实现内置事务时,我们决定恢复SqlTransaction微观orm上的(ReadCommited),我们发现一切都很好.

Azure数据库是否需要显式SqlTransaction(由代码管理)?SqlTransactionAzure数据库的表现如何影响?为什么这样实现?

编辑:我将发布一些关于我们收集痕迹的方式的更准确的信息.我们的Azure事件日志有时以纳秒表示,有时以毫秒为单位.看起来很奇怪.

ado.net distributed-transactions micro-orm entity-framework-6 azure-sql-database

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

使用Dapper查询复杂对象

我有一个具有以下属性的Customer类:

public int Id { get; set; }
public string Name { get; set; }
public int AddressId { get; set; }
public Address Address { get; set; }
Run Code Online (Sandbox Code Playgroud)

我的目标是编写一个Dapper查询,该查询将使用内部联接在返回的每个Customer中填充整个Address属性。

这是我所拥有的并且正在运行,但是我想知道这是否是最干净/最简单的方法:

StringBuilder sql = new StringBuilder();
using (var conn = GetOpenConnection())
{
    sql.AppendLine("SELECT c.Id, c.Name, c.AddressId, a.Address1, a.Address2, a.City, a.State, a.ZipCode ");
    sql.AppendLine("FROM Customer c ");
    sql.AppendLine("INNER JOIN Address a ON c.AddressId = a.Id ");

    return conn.Query<Customer, Address, Customer>(
        sql.ToString(),
        (customer, address) => {
            customer.Address= address;
            return userRole;
        },
        splitOn: …
Run Code Online (Sandbox Code Playgroud)

c# orm dapper micro-orm dapper-extensions

7
推荐指数
2
解决办法
5317
查看次数

ServiceStack和OrmLite中的异步支持

目前存在ServiceStack的异步分支,可以创建异步服务.但是为了获得异步的所有好处,所有IO绑定操作都应该是异步的,因此所有数据库请求也应该是异步的.我目前正在使用OrmLite和Postgresql,因此我想知道OrmLite是否支持异步查询/操作?如果没有,其他什么.Net Micro-Orms支持异步操作?

asynchronous async-await servicestack micro-orm ormlite-servicestack

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

Dapper:是否可以自定义特定类型的特定字段的类型映射?

假设我有这User门课:

public class User
{
    public int      ID          { get; set; }
    public string   FirstName   { get; set; }
    public string   LastName    { get; set; }
    public string   Email       { get; set; }
    public DateTime DateCreated { get; set; }
    public DateTime LastLogin   { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我想将其映射到下表:

CREATE TABLE "user" (
  "ID"          int(11) NOT NULL AUTO_INCREMENT,
  "FirstName"   varchar(45) DEFAULT NULL,
  "LastName"    varchar(45) DEFAULT NULL,
  "Email"       varchar(255) NOT NULL,
  "DateCreated" int(11) NOT NULL,
  "LastLogin"   int(11) NOT NULL, …
Run Code Online (Sandbox Code Playgroud)

c# sql dapper micro-orm

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

如何使用 dapper 将 DbGeography 插入 SQL Server

我已经创建了模型 using System.Data.Entity.Spatial;

public class Store
{
    public int Id { get; private set; }
    public string Name { get; set; }
    public string Address { get; set; }
    public DbGeography Location { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

插入数据库

using (SqlConnection conn = SqlHelper.GetOpenConnection())
{
    const string sql = "INSERT INTO Stores(Name, Address, Location) " + 
                       "VALUES (@Name, @Address, @Location)";
    return conn.Execute(sql, store);                                
}
Run Code Online (Sandbox Code Playgroud)

我得到了例外 type System.Data.Entity.Spatial.DbGeography cannot be used as a parameter value

我试过寻找插入的方法,是我能找到的最好的方法,但它试图只插入 1 个参数,我应该怎么做才能插入具有 dbgeography 成员的对象? …

c# sql-server geospatial dapper micro-orm

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