标签: npoco

如何在PetaPoco中使用SQL WHERE IN构造?

我有一个名为Tags(Id,Name)的数据库表,我想从中选择名称与列表中的名称匹配的表.在SQL中我会使用类似的东西:

Select * from Tags Where Name In ('Name1', 'Name2', 'xxx...)
Run Code Online (Sandbox Code Playgroud)

但是现在在ASP.Net MVC3项目中使用PetaPoco,我很难搞清楚如何正确地完成它.到目前为止,我已经尝试过:

var tagsToFind = new string[] { "SqlServer", "IIS" };
var sql = PetaPoco.Sql.Builder.Select("*").From("Tags").Where("Name in (@0)", tagsToFind);
var result = db.Query<Tag>(sql);
Run Code Online (Sandbox Code Playgroud)

这导致以下SQL,其中使用tagsToFind列表中的第一个名称来匹配表数据而不是所有表名数据.

SELECT * FROM Tags WHERE (Name in (@0)) -> @0 [String] = "SqlServer"
Run Code Online (Sandbox Code Playgroud)

这有点令人沮丧,知道这可能不是那么难......任何帮助都表示赞赏!

更新: 我发现它可以用另一种方式完成

var sql = PetaPoco.Sql.Builder.Append("Select * from tags Where Name IN (@0", tagNames[0]);
foreach (string tagName in tagNames.Where(x => x != tagNames[0])) {
    sql.Append(", @0", tagName);
} …
Run Code Online (Sandbox Code Playgroud)

orm petapoco npoco

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

使NPoco考虑数据库默认值

table在我的数据库中给出以下内容(PostgreSQL)

CREATE TABLE produkt (
    id SERIAL NOT NULL,
    name VARCHAR(50),
    created_at TIMESTAMP WITHOUT TIME ZONE DEFAULT timezone('utc'::text, now())
);

ALTER TABLE produkt ADD CONSTRAINT produkt_pkey PRIMARY KEY (id);
Run Code Online (Sandbox Code Playgroud)

我想使用NPoco来访问使用此poco的数据

[TableName("produkt"), PrimaryKey("id", AutoIncrement = true)]
public class Product
{
    [Column("id")]
    public int Id { get; set; }

    [Column("name")]
    public string Name { get; set; }

    [Column("created_at")]
    public DateTime CreatedAt { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

现在,当我打电话的时候

var product = new Product
{
    Name = "My new Product"
};

Database.Insert(product);  // …
Run Code Online (Sandbox Code Playgroud)

.net c# postgresql npoco

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

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
查看次数

NPoco在.net Core中的用法

我最近开始与asp.net核心mvc一起进入新的.net核心。我遇到了一些问题,但我能够自己解决大多数问题。真正令我难过的是使用NPoco。

您应该如何创建数据库实例?

该文档的内容如下:

IDatabase db = new Database("connStringName");
List<User> users = db.Fetch<User>("select userId, email from users");
Run Code Online (Sandbox Code Playgroud)

对于DNXCORE50,这是不正确的,因为DNCORE50已排除此构造函数

我也尝试过这样:

IDatabase _db = new Database(new SqlConnection(ConnStr));
_db.Single<string>("SELECT Username FROM dbo.Member");
Run Code Online (Sandbox Code Playgroud)

当这段代码运行时,我得到一个'NullReferenceException'

有谁知道如何使NPoco正常工作?

npoco asp.net-core-mvc .net-core asp.net-core asp.net-core-1.0

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

使用NPOCO映射复杂类

是否可以使用NPoco映射具有嵌套类和集合类的复杂类?我已经看了一下文档但是我不能100%清楚我是否可以用一个查询映射到这个类.

例如,给定这些类:

public class User
{
  public int UserId { get; set; }
  public string Name { get; set; }
  public Address Address { get; set; }
  public List<Car> Cars { get; set; }
}

public class Address
{
  public string Street { get; set; }
  public string City { get; set; }
}

public class Car
{
  public string Make { get; set; }
  public string Color { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

是否可以映射用户并使用一个查询填充Address属性和Cars属性?

我已经看到我可以做一个OneToMany Fetch,并且它也可以映射一个属性,这是一个类,但我不确定我是否可以使用一个fetch映射一个具有这两个类的类.

c# mapping orm object npoco

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

如何使用NPoco在同一个表中保存嵌套对象?

我有一个这样的课:

public class AuthEntity 
{
  public int Id { get; set; }

  public AuthResource Resource { get; set; }

  public int ActionId { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

AuthResource在哪里:

public class AuthResource 
{
  public long ResourceId { get; private set; }

  public int ResourceType { get; private set; }
}
Run Code Online (Sandbox Code Playgroud)

存储数据的表具有以下字段:

  • ID
  • RESOURCEID
  • 的ResourceType
  • ActionId

我可以很好地阅读AuthEntity(包括Resource属性),但我不知道如何插入AuthEntity记录.NPoco说没有资源字段.如何将嵌套对象字段映射到表字段?

谢谢

c# npoco

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

NPoco/PetaPoco Fetch()获取所有数据然后过滤客户端是否正常?

我注意到 NPoco(或 PetaPoco)的工作方式存在巨大差异,具体取决于您使用 LINQ 时调用的函数。

例如,比较 Fetch() 和 Query(),两者似乎都做同样的事情:

AFetch<EntryImage>().Where(t => t.EntryType == type && t.EntryID == entryID);

Query<EntryImage>().Where(t => t.EntryType == type && t.EntryID == entryID);

A返回表中的每一行(10,000+),然后过滤客户端。

B仅返回我期望的一行。

我发现这种行为非常危险——很容易在晚上不注意的情况下编写出性能非常糟糕的代码。这是预期的行为吗?如果这是正常行为,有什么方法可以获取以这种方式工作的方法列表,以便我可以尽可能避免使用它们?

linq petapoco npoco

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

NPoco:使用表达式表示法更新一些(但不是全部)列

使用 NPoco,我试图弄清楚如何更新一个对象的多列(但不是全部)。这工作...

db.Update(item, new[] { "status", "tracking_number", "updated_at" });
Run Code Online (Sandbox Code Playgroud)

...但我正在尝试使用下面的符号,以便我可以使用对象的属性名称而不是数据库列名称。

int Update<T>(T poco, Expression<Func<T, object>> fields);
Run Code Online (Sandbox Code Playgroud)

如何使用上述语法列出多于一列?这将更新一列,但我假设我可以列出多个列,但我无法弄清楚符号。

db.Update(item, i => i.Status);
Run Code Online (Sandbox Code Playgroud)

c# orm lambda npoco

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

如何使用PetaPoco或NPoco生成DDL?

我刚开始在我的一个项目中使用PetaPoco/NPoco并且不得不说它摇滚,但似乎该库无法生成DDL并创建基于Poco的表.我知道OrmLite可以做到这一点.

是否有一种方法/解决方法可用于例如装饰poco,然后根据属性生成DBMS特定的表脚本?例如Oracle,MSSql等

谢谢

c# poco petapoco npoco

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

NPOCO Fetch - 对象必须实现 IConvertible

这是我第一次尝试使用 NPOCO,我正在尝试读取 MS SQLEXPRESS 数据库

NPOCO“2.2.49”来自 NuGet、SQLEXPRESS 2008 R2、VS 2013、.NET 4.5

连接字符串是

<connectionStrings>
    <add name="TrackTime.Properties.Settings.connectionDB" connectionString="Data Source=ame-PC\SQLEXPRESS;Initial Catalog=TrackTime;Integrated Security=True"
  providerName="System.Data.SqlClient" />
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)

代码是

db = new Database("TrackTime.Properties.Settings.connectionDB");
var tracks = db.Fetch<trackdatum>();
// List<trackdatum> tracks = db.Fetch<trackdatum>();

trackdatum class
        using NPoco;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;

    namespace TrackTime
    {
        [TableName("trackdata")]
        [PrimaryKey("trackdata_id")]
        [ExplicitColumns]
        public partial class trackdatum
        {
            [Column]
            public string trackdata_customer { get; set; }

            [Column]
            public DateTime trackdata_date { get; set; }

            [Column]
            public DateTime …
Run Code Online (Sandbox Code Playgroud)

c# sql-server npoco

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

npoco.Insert <T>在没有AutoIncrement主键的表上失败

我有一个问题,使用nPoco的'Insert of T'方法,MySQL表定义如下:

CREATE TABLE `TestTable` (
    `Id` INT(11) NOT NULL,
    `StatusEnum` INT(11) NOT NULL,
    PRIMARY KEY (`Id`)
)
Run Code Online (Sandbox Code Playgroud)

Database.Entity定义为......

[TableName("operations.TestTable")]
[PrimaryKey("Id")]
[ExplicitColumns]
public class TestTable
{
    [Column]
    public int Id { get; set; }

    [Column]
    public Status StatusEnum { get; set; } = Status.Default;
}
Run Code Online (Sandbox Code Playgroud)

代码段:

// this works   
var foo = new TestTable { Id = 123 };
database.Execute(
    "insert into operations.TestTable (Id, StatusEnum) values (@0, @1)", 
    foo.Id, 
    foo.StatusEnum);

// this throws "Field 'Id' doesn't have a default …
Run Code Online (Sandbox Code Playgroud)

c# mysql orm petapoco npoco

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