petapoco

PetaPoco初体验

不想你离开。 提交于 2021-02-14 19:00:19
更新NuGet VS2010自带了NuGet,但是版本可能不是最新的(我的就不是)。 首先把NuGet升级到最新版本。 打开《扩展管理器》 在左侧的手风琴菜单中选中《更新》 如上图,这种情况就是需要更新《NuGet Package Manager》。 如果没有出现,则说明你的《NuGet》已经是最新的了(前提是你是VS2010),直接进入下一章吧。 点击《更新》,然后按操作进行就ok了。 安装PetaPoco 4.0.3 PetaPoco C#微型ORM框架,基本无需配置,仅由单个cs文件构成,支持.net3.5 .net4.0。 官方还出品了配套的T4模板用来自动生成数据库Models。 官方网站 截稿时PetaPoco的官方最新版本为5.0.1。我不采用5.0.1版本,因为我用的是.net3.5,而5.0.1的版本中用到了一个类System.Tuple,这个类是从.net4.0才开始有的。(当然也可以自己实现这个类,不过像我这样的初学者还是算了吧)。 经过google我决定使用4.0.3的版本。 这时遇到了一个问题: NuGet图形界面中默认列出的只有最新版本,一装就是5.0.1。 再次google,找到《NuGet 安装旧版本库》的方法。那就是使用NuGet命令行。 依次打开《工具》《库程序包管理器》《程序包管理器控制台》 敲入命令对可用的版本进行查询 get-package

How to call oracle stored procedure using petapoco

血红的双手。 提交于 2021-01-29 09:13:23
问题 We have recently changed from ADO to Peta Poco. Connecting to SQL Server is quite easy and is getting familiar with it. However, I can't find a way to connect to Oracle database. These are the syntaxes I tried. var records = db.Execute("ADMIN.ProcedureName @0", param); var records = db.Fetch<dynamic>("exec ADMIN.ProcedureName ('" + str1 + "','" + recordStart + "','" + recordEnd + "');"); 来源: https://stackoverflow.com/questions/56849740/how-to-call-oracle-stored-procedure-using-petapoco

使PetaPoco导致前端显示日期大8小时

你。 提交于 2020-04-29 19:08:31
在新项目中遇到了前端显示日期与数据库数据对不上时一头雾水,  前端时间:  数据库时间: 上面对比可以看出,前端数据比数据库时间大八个小时。 首先判断可能是转json格式出错,所以特地写个时间变量time测试经json转换后是否出错。   控制器方法 :    前台数据 :  json转换后日期是时间戳,时间戳转换后可以看出date与控制器获取到的数据一致,而CreateDate则比控制器获取到的数据大八个小时,由此判断json转换是没有问题。 后来展开time与CreateDate的Date详情发现两者DateTime.Kind分别为Local、UTC(Kind官方解释:该值指示由此实例表示的时间是基于本地时间、协调世界时 (UTC),还是两者皆否)。 到此,前端时间为什么比数据库时间大八个小时显然是由于DateTime.Kind设置为UTC后json转换时是根据本地时区UTC+08:00得出。    为什么实体中DateTime类型的DateTime.Kind会是UTC,经过一番查找,发现是Petapoco框架中有个标准时间映射器    修改DateTimeKind.UTC为DateTimeKind.Local,最终解决时间差问题。    来源: oschina 链接: https://my.oschina.net/u/4320349/blog/3981857

.NET(C#)主流的ORM框架

拥有回忆 提交于 2020-04-27 09:46:07
.NET(C#)主流ORM总揽 SqlSugar (国内) Dos.ORM (国内) Chloe (国内) StackExchange/Dapper (国外) Entity Framework (EF) (国外) NHibernate (国外) ServiceStack/ServiceStack.OrmLite (国外) linq2db (国外) Massive (国外) PetaPoco (国外) SqlSugar SqlSugar是国人开发者开发的一款基于.NET的ORM框架,是可以运行在.NET 4.+ & .NET CORE的高性能、轻量级 ORM框架,众多.NET框架中最容易使用的数据库访问技术。 特点: 开源、免费 国内开发者开发、维护; 支持.NET Core; 支持主流数据库,如:SQL Server,MySql,Oracle,Sqlite等; 维护更新及时 PetaPoco PetaPoco:轻量的POCO对象和数据库映射的ORM框架。 特点: 开源、免费 linq2db linq2db也是一款快速、轻量、类型安全的POCO对象和数据库映射的ORM框架。从构架上来说,linq2db是对比如:Dapper、PetaPoco这个的微ORM的进一步封装,但它不像Entity Framework那样笨重。它没有实现状态跟踪,需要自己处理实体的状态更改等。 推荐等级:★★★

在.net core 中PetaPoco结合EntityFrameworkCore使用codefirst方法进行开发

早过忘川 提交于 2020-04-25 15:16:19
在.net core开发过程中,使用最多的就是注入方法。但是在.net core使用PetaPoco时,PetaPoco还不支持进行注入方式进行处理一些问题。 今天对PetaPoco进行了一些扩展,可以很方便的将PetaPoco进行注入操作,使用和EF很相似,但是更加简单 1、对PetaPoco.Compiled进行的一些扩展PetaPoco.Compiled.Extensions库 nuget:https://www.nuget.org/packages/PetaPoco.Compiled.Extensions/ 欢迎使用 github:https://github.com/mzy666888/PetaPoco.Compiled.Extensions 欢迎star 具体扩展内容如下 1.1 创建PetaPocoDBContextOptions类 namespace PetaPoco.Compiled.Extensions { using Microsoft.Extensions.Options; public class PetaPocoDBContextOptions : IOptions<PetaPocoDBContextOptions> { /// <summary> The default configured TOptions instance </summary>

Mini ORM——PetaPoco笔记

独自空忆成欢 提交于 2020-04-25 15:15:42
记录一下petapoco官网博客的一些要点。这些博客记录了PetaPoco是如何一步步改进的。 目录: Announcing PetaPoco PetaPoco-Improvements PetaPoco-Improvements II PetaPoco-T4 Template PetaPoco-NuGet Package PetaPoco-Paged Queries PetaPoco-Named Columns,Result Columns and int/long conversion PetaPoco-NUnit Test Cases PetaPoco-Value Conversions and UTC Times PetaPoco-T4 Template support for SQL Server Some Minor PetaPoco Improvements PetaPoco-Transaction Bug and Named Parameter Improvements PetaPoco-Custom mapping with the Mapper interface PetaPoco-Smart Consecutive Clause Handling in SQL Builder PetaPoco-Performance Improvements using

Dapper一个和petapoco差不多的轻量级ORM框架

做~自己de王妃 提交于 2020-04-25 14:31:53
我们都知道ORM全称叫做Object Relationship Mapper,也就是可以用object来map我们的db,而且市面上的orm框架有很多,其中有一个框架 叫做dapper,而且被称为the king of ORM。 一:为什么选择Dapper 1. 性能优越: 其实在各大网站上,我们大概都会看到这样的一个对比效果图,在超过500次poco serialization的过程中所表现的性能,我们发现dapper是第二名, 当然第一名谁也无法超越,越底层的当然久越快,同时也就越麻烦。就好像谁能超过“01代码”呢??? 2. 支持多数据库 支持多数据库的本质是因为Dapper是对IDBConnection接口进行了方法扩展,比如你看到的SqlMapper.cs,一旦你这样做了,我们也知道, SqlConnection,MysqlConnection,OracleConnection都是继承于DBConnection,而DBConnection又是实现了IDBConnection的接口,对吧。。。 二:安装Dapper install dapper的方式通常有两种: 1. 通过nuget进行安装   如果你不知道怎么用nuget进行安装,或者不知道install-package是什么,可以在browser上找一下,比如下面这样: 然后我们copy到package console

Executing Oracle function and getting back a return value

廉价感情. 提交于 2020-03-06 03:14:28
问题 I am using NPoco ORM and trying to get a result from Oracle function. I have tried: public string GetData(int param1, int param2) { var command = "PKG_SOMEPACKAGE.SET_DATA( @p_param1, @p_param2);"; var sql = Sql.Builder.Append(command, new { p_param1 = 10, p_param2 = 20 }); string result = this.Db.ExecuteScalar<string>(sql); return result; } But it doesn't work and returns ORA-00900: invalid SQL statement The Oracle function looks something like: function SET_DATA ( p_param1 IN NUMBER, p

Mapping relationships using PetaPoco paging

£可爱£侵袭症+ 提交于 2020-01-12 09:15:26
问题 I am using PetaPoco v5.1.228.0 and I am trying to fetch a list of people along with the category they belong to, using paging (30 items per page). This is my code: IEnumerable<Person> people; var sql = new Sql("SELECT * FROM Person p INNER JOIN Category c ON p.CategoryId = c.Id"); using (var db = GetDatabaseConnection()) { var paging = db.Page<Person>(currentPage, 30, sql); people = paging.Items; } Person.cs public class Person { public int Id { get; set; } public string Name { get; set; }

Mapping relationships using PetaPoco paging

与世无争的帅哥 提交于 2020-01-12 09:14:05
问题 I am using PetaPoco v5.1.228.0 and I am trying to fetch a list of people along with the category they belong to, using paging (30 items per page). This is my code: IEnumerable<Person> people; var sql = new Sql("SELECT * FROM Person p INNER JOIN Category c ON p.CategoryId = c.Id"); using (var db = GetDatabaseConnection()) { var paging = db.Page<Person>(currentPage, 30, sql); people = paging.Items; } Person.cs public class Person { public int Id { get; set; } public string Name { get; set; }