标签: dapper-rainbow

Dapper.Rainbow VS Dapper.Contrib

有人可以解释一下Dapper.RainbowDapper.Contrib之间的区别吗?

我的意思是你什么时候使用Dapper.Contrib的SqlMapperExtensions.cs,你什么时候应该使用Dapper.Rainbow?

orm dapper dapper-rainbow

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

忽略模型属性的属性

如何使用dapper/dapper extensions/dapper rainbow或any忽略模型上的属性

那些精致的图书馆?

dapper dapper-rainbow dapper-extensions

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

小巧玲珑.映射到SQL列,列名称中包含空格

我已经成功地将今天的东西作为小沙箱/ POC项目运行起来,但似乎在一个问题上让我头疼...

题:

有没有办法让dapper映射到带有空格的SQL列名.

作为我的结果集,我有一些这样的效果.

例如:

SELECT 001 AS [Col 1], 
       901 AS [Col 2],
       00454345345345435349 AS [Col 3],
       03453453453454353458 AS [Col 4] 
FROM [Some Schema].[Some Table]
Run Code Online (Sandbox Code Playgroud)

我的班级看起来像这样

    public class ClassA
    {          
        public string Col1 { get; set; }    

        public string Col2 { get; set; }

        ///... etc
     }
Run Code Online (Sandbox Code Playgroud)

我的实现目前看起来像这样

 public Tuple<IList<TClass>, IList<TClass2>> QueryMultiple<TClass, TClass2>(object parameters)
 {
      List<TClass> output1;
      List<TClass2> output2;

      using (var data = this.Connection.QueryMultiple(this.GlobalParameter.RpcProcedureName, parameters, CommandType.StoredProcedure))
      {
           output1 = data.Read<TClass>().ToList();
           output2 = data.Read<TClass2>().ToList();
      }

      var result = new …
Run Code Online (Sandbox Code Playgroud)

c# dapper dapper-rainbow

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

如何使用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.Rainbow插入到SQLite上的AutoIncrement表中?

我在SQLite上创建了一个示例表,它有一个自动递增的Id列.

CREATE TABLE "ESVLIntegration" ("Id" INTEGER PRIMARY KEY  AUTOINCREMENT  NOT NULL  UNIQUE , "ProcessId" TEXT NOT NULL , "UserId" INTEGER NOT NULL , "Status" TEXT NOT NULL , "StartDate" DATETIME NOT NULL , "EndDate" DATETIME, "Operation" TEXT NOT NULL , "SNEquip" TEXT NOT NULL , "CardName" TEXT NOT NULL , "FilePath" TEXT NOT NULL , "Processed" BOOL NOT NULL )
Run Code Online (Sandbox Code Playgroud)

但是当我第二次尝试插入时,我收到以下错误:

由于约束违规而中止PRIMARY KEY必须是唯一的

这是我的代码

public class ESVLIntegration
{
    public long Id { get; set; }
    public String ProcessId { get; …
Run Code Online (Sandbox Code Playgroud)

c# sqlite dapper dapper-rainbow

5
推荐指数
1
解决办法
1529
查看次数

Dapper Rainbow - 如何在另一个模式中指定表名

我对 Dapper Rainbow 还很陌生,所以我可能会遗漏一些明显的东西。是否可以指定表名,如果可以,如何指定?

我尝试了以下但没有运气。

public class DashboardContext : Database<DashboardContext>
{
    public DashboardContext()
    {
       this.DashboardResults = new Table<DashboardResult>(this, "Monitor.DashboardResult");
    }

    public Table<DashboardResult> DashboardResults { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

dapper dapper-rainbow

5
推荐指数
1
解决办法
906
查看次数

Dapper.Rainbow与现有的数据库架构

我正在尝试Dapper.我喜欢到目前为止所看到的.为了做简单的CRUD,我使用Dapper.rainbow.它工作得很好.但是,仅当表具有名称为Id的标识列时,它才有效.有这样的db是有意义的,但我不能要求在数据库中更改列名只是为了使用Dapper.为了更清楚,我正在使用像Northwind Db这样的数据库.它在Id列中重复了表名.

为了处理这个问题,我更改了Dapper.Rainbow代码如下:

   public T Get(TId id,string idColumnName="Id")
        {
            return database.Query<T>("select * from " + TableName + " where               "+idColumnName+" = @id", new { id }).FirstOrDefault();
        }
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来处理这个如列映射/注释或完全不同的东西?

我读过这样的问题

使用类属性手动映射列名称

Dapper.Rainbow VS Dapper.Contrib

(我遇到了与Dapper.Contrib类似的小问题,我会另外问一下).

更新 - 不确定答案是否适用于我的Dapper.Rainbow问题(至少,我不知道如何).

提前感谢您的帮助!

c# dapper dapper-rainbow

4
推荐指数
1
解决办法
4851
查看次数

dapper rainbow MissingMethodException

为什么我会得到这个例外?代码不一样,但接近'demo'https://gist.github.com/1599013

例外:MissingMethodException

说明:

找不到方法:'System.Collections.Generic.IEnumerable 1<System.Object> Dapper.SqlMapper.Query(System.Data.IDbConnection, System.String, System.Object, System.Data.IDbTransaction, Boolean, System.Nullable1,System.Nullable`1)'.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Mail;
using Dapper;
using System.Data.SqlClient;
using MySql.Data.MySqlClient;

namespace daconsole2
{
    class Program
    {
        class Product
        {
            public int Id { get; set; }
            public string Name { get; set; }
            public string Description { get; set; }
            public DateTime? LastPurchase { get; set; }
        }

        // container with all the tables
        class MyDatabase : Database<MyDatabase>
        {
            public …
Run Code Online (Sandbox Code Playgroud)

c# dapper dapper-rainbow

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

标签 统计

dapper ×8

dapper-rainbow ×8

c# ×4

orm ×2

dapper-extensions ×1

micro-orm ×1

sqlite ×1