标签: petapoco

如何使用PetaPoco.Database进行单元测试服务

我在我目前的项目中使用PetaPoco作为微型ORM,我必须说我喜欢它.然而,我发现自己在使用PetaPoco.Database的简单场景 - 单元测试服务中苦苦挣扎

public class MyService : IMyService
{
    private readonly PetaPoco.Database _database;

    public MyService(PetaPoco.Database database)
    {
        _database = database;
    }

    public void SaveSomething(MyObject myObject)
    {
        //...custom logic
        _database.Save(myObject);
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用IoC(Castle.Windsor)在任何需要的地方注入IMyServicePetaPoco.Database.

现在,当我尝试对我的服务进行单元测试时,我无法正确模拟存根PetaPoco.Database以验证是否正确调用了Save方法.我正在使用NUnitRhino.Mocks进行单元测试和模拟.

[TestFixture]
public class MyServiceTests
{ 

    private PetaPoco.Database _database;

    [SetUp] 
    public void SetUp()
    {
        _database = MockRepository.GenerateMock<Database>("");
    }

    [Test]
    public void ShouldProperlySaveSomething()
    {
        //Arrange
        var myObject = new …
Run Code Online (Sandbox Code Playgroud)

.net unit-testing rhino-mocks mocking petapoco

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

我误解了PetaPoco.IgnoreAttribute吗?

我有一张包含服务公告的表格.对于这个表我有一个1:1的POCO - 除了它包含一个额外的字段.在我的查询中,这是作者的用户名,该表仅包含作者ID.

我认为我可以[Ignore]在这个字段上添加一个属性,然后能够使用POCO进行插入/更新而不会出现问题?我的问题是,使用[Ignore]属性,该BrukerNavn字段未填充.而没有属性,它会在插入/更新的一声.

[TableName("tblDriftsmelding")]
[PrimaryKey("DriftID")]
public class Driftsmelding
{
                            public int DriftID { get; set; }
    [Column("tittel")]      public string Tittel { get; set; }
                            public string Tekst { get; set; }
                            public string HTMLTekst { get; set; }
    [Column("gyldigfra")]   public DateTime? Fra { get; set; }
    [Column("gyldigtil")]   public DateTime? Til { get; set; }
    [Column("publisert")]   public bool Publisert { get; set; }
    [Column("CreatedBy")]   public int? BrukerID { get; …
Run Code Online (Sandbox Code Playgroud)

c# petapoco

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

PetaPoco Insert - 最快的方法?

将记录插入数据库的最快选项是什么:使用以下哪些方法:

  • Database.Insert(poco)
  • Database.Insert(tableName, pkName, poco)
  • Database.Save(poco)
  • Database.Save(tableName, pkName, poco)

出于性能原因,我应该使用哪一个?一个对我来说并不比另一个方便......

谢谢.

.net database insert petapoco

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

防止 PetaPoco 将变量识别为输入参数

我在 C# 应用程序中使用 PetaPoco.Core 4.0.3 来访问 MySql 数据库。

我正在尝试创建一个使用变量的查询,但我不希望 PetaPoco 将它们视为输入参数。这是一个无用的查询,只是为了说明我的意思:

SET @num := 0;

SELECT
  @num := @num + 1 AS row_number
FROM
  buzz
LIMIT 100;
Run Code Online (Sandbox Code Playgroud)

当我这样做时,PetaPoco 将 @num 识别为输入参数,并且我收到以下错误:

指定了参数“@num”,但传递的参数都没有具有此 >name 的属性(在“SET @num := 0; SELECT @num;”中)

我还尝试通过加倍@字符来转义它

SET @@num := 0;

SELECT
  @@num := @@num + 1 AS row_number
FROM
  buzz
LIMIT 100;
Run Code Online (Sandbox Code Playgroud)

但后来我收到

必须定义参数“@num”。

有没有一种方法可以在查询中声明和使用变量,而无需 PetaPoco 将它们识别为输入参数?

提前致谢

保罗

mysql sql petapoco

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

多线程环境中的PetaPoco事务

我只是以多线程方式测试PetaPoco Transaction ...

我有一个简单的测试用例:

- 简单值对象称之为MediaDevice - 插入记录并将其更新1000次

void TransactionThread(Object object)
{


    Database db = (Database) object;

    for(int i= 0; i < 1000;i++)
    {


        Transaction transaction = db.GetTransaction();

        MediaDevice device = new  MediaDevice();
        device.Name = "Name";
        device.Brand = "Brand";

        db.Insert(device);

        device.Name = "Name_Updated";
        device.Brand = "Brand_Updated";


        db.Update(device);

        transaction.Complete();

    }


    long count = db.ExecuteScalar<long>("SELECT Count(*) FROM MediaDevices");

    Console.WriteLine("Number of all records:" + count);

}
Run Code Online (Sandbox Code Playgroud)

我在这两个线程中调用它:[两个线程的单个数据库对象]

void TransactionTest()
{

    Database db =  GetDatabase();

    Thread tThread1 = ... // thread for  TransactionTest()

    Thread …
Run Code Online (Sandbox Code Playgroud)

petapoco

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

PetaPoco vs NPoco

NPoco似乎是一个支持更高级功能的DLL PetaPoco. PetaPoco安装代码生成模板和PetaPoco.cs.Nuget版本PetaPoco是4.0.3.我知道有一些版本(即4.0.12)可以实现其中的一些功能NPoco.

如何一起使用代码生成PetaPoco和最新功能NPoco

c# nuget petapoco npoco

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

PetaPoco被弃用了吗?我现在应该使用NPoco吗?(2013年第3季度)

我正在开始一些新项目,我想使用PetaPoco(我之前在其他项目中使用过它)或NPoco.

我知道NPoco是PetaPoco的一个分支(基于v4.x),而PetaPoco现在是v5.x.

但似乎NPoco虽然是PetaPoco +的一些新功能,但代码库现在有点分歧,PetaPoco的变化不能轻易地集成到NPoco和反之亦然.

PetaPoco仍在开发中吗?是否已弃用/处于维护模式?所有未来的发展都将在NPoco完成吗?

petapoco npoco

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

如何使用 lambda 表达式和匿名类型获取类型的属性名称?

我正在尝试使用表达式树和匿名类型来实现以下目标。

假设我有这门课:

class Person
{
   public string FirstName {get;set;}
   public string MiddleName {get;set;}
   public string LastName {get;set;}
   public DateTime DateOfBirth {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

现在我希望能够调用以下内容:

string[] names = Foo<Person>(x=> new { x.LastName, x.DateOfBirth });
Run Code Online (Sandbox Code Playgroud)

我希望名称包含 2 个项目:“姓氏”和“出生日期”。

我正在尝试以编译时安全的方式扩展PetaPoco,而不是编写字符串 sql,以便我可以指定要包含在 SQL 中的属性/列的列表,而不是选择所有内容。我有一些相当大的实体,在某些情况下,出于性能原因我不想选择所有列。

c# linq lambda petapoco

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

使用PetaPoco Dynamic和WebAPI返回Json

是否可以使用PetaPoco动态查询在ASP.net WebAPI中返回Json?

// WebAPI控制器

public class BranchController : ApiController
{
    public IEnumerable<dynamic> Get()
    {
        // Create a PetaPoco database object
        var db = new PetaPoco.Database("DefaultConnection");

        // Show all Branches
        var b = db.Query<dynamic>("SELECT * FROM Branches").ToList();

        return b;
    }

}
Run Code Online (Sandbox Code Playgroud)

我收到一个错误

要成为XML可序列化,从IEnumerable继承的类型必须具有Add(System.Object)的实现

c# json c#-4.0 petapoco asp.net-mvc-4

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

实现IMapper接口

我过去使用过PetaPoco,用[Column("{column name")]属性装饰我的对象等等.但是,我正在尝试实现一个"纯"域模型,该模型不了解持久性,因此不了解PetaPoco的属性.

PetaPoco 博客提到有一个IMapper接口("New Mapper API")必须实现才能将对象映射到它们的表而不需要修饰对象的类.但是,博客文章或源代码都没有真正解释IMapper应该执行的实现.

如果我只是想将我的域实体映射到特定的表,主键和列名,我是否需要实现IMapper,我该怎么做?

petapoco

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

标签 统计

petapoco ×10

c# ×4

.net ×2

npoco ×2

asp.net-mvc-4 ×1

c#-4.0 ×1

database ×1

insert ×1

json ×1

lambda ×1

linq ×1

mocking ×1

mysql ×1

nuget ×1

rhino-mocks ×1

sql ×1

unit-testing ×1