将以下内容映射到词典的方法?
Sql sql = new Sql()
.Append("SELECT Count(*) ")
.Append("FROM Custumers")
.Append("WHERE CustomerId = @0", Id)
var result = database.Fetch<Dictionary<int,DateTime>>(sql);
Run Code Online (Sandbox Code Playgroud)
我不能使用List,因为DateTime也是thr.
在我的项目中,我们使用petapoco作为数据访问的ORM.但是在删除具有一对多关系的数据时我遇到了一些困难.我有两个名为user和group的表.这里一个用户可以是多个组的成员.所以用户和组表是通过使用另一个名为UserGroup的表相关联的,该表在我们的项目中没有作为单独的模型公开.那么如何使用petapoco从组中删除用户?
我的用户模型看起来像这样
[TableName("User")]
[PrimaryKey("UserId")]
[ExplicitColumns]
public class User
{
[Column("UserId")]
public int Id { get; set; }
[Column]
[Required]
public Guid Identifier { get; set; }
[Column("UserStatusId")]
[Required]
public UserStatus UserStatus { get; set; }
[Column("RoleId")]
[Required]
public Role Role { get; set; }
[Column]
public int? SchoolId { get; set; }
[Column]
public int? LanguageId { get; set; }
[Column]
public int? LevelId { get; set; }
[Column("TitleId")]
public Title Title { get; set; }
[Column]
public int? GenderId …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用PetaPoco为ASP.NET Web表单项目生成我的DAL层.
Namespace Eva.Dal.Polls
Public Partial Class EVAMOD_PL_CategoryDb
Private db As Eva.Dal.Core.EvaDb
Public Function Insert(a As EVAMOD_PL_Category) As Object
Return db.Insert(a)
End Function
Public Sub New()
db = New Eva.Dal.Core.EvaDb
End Sub
End Class
Public Partial Class EVAMOD_PL_GL_CategoryDb
Private db As Eva.Dal.Core.EvaDb
Public Function Insert(a As EVAMOD_PL_GL_Category) As Object
Return db.Insert(a)
End Function
Public Sub New()
db = New Eva.Dal.Core.EvaDb
End Sub
End Class
End Namespace
Run Code Online (Sandbox Code Playgroud)
特别是我对如何打开数据库感兴趣.在PetaPoco网站上有一个例子
// Create a PetaPoco database
objectvar db=new PetaPoco.Database("connectionStringName");
// Show all articles
foreach …Run Code Online (Sandbox Code Playgroud) 我试图在petapoco中这样做
var people
= db.Query<Person>("SELECT * FROM people").Where(p =>
p.FirstName.Equals("George") && p.LastName.Equals("Clooney")).ToList();
Run Code Online (Sandbox Code Playgroud)
问题是它从数据库中获取整个记录集,然后对其进行过滤.我尝试了Fetch而不是查询,结果相同.
如何编写查询以便它发送查询以从数据库中获取过滤结果,而不是在Web服务器上进行过滤?
我有一个具有一些自定义功能的Umbraco CMS应用程序,为此我使用了PetaPOCO将数据存储在数据库中。我创建了POCO和一个Umbraco事件,该事件在应用程序启动时触发以创建表(如果该表不存在):
public class RegisterEvents : ApplicationEventHandler
{
//This happens everytime the Umbraco Application starts
protected override void ApplicationStarted(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext)
{
//Get the Umbraco Database context
var db = applicationContext.DatabaseContext.Database;
//Check if the DB table does NOT exist
if (!db.TableExist("MyTable"))
{
//Create DB table - and set overwrite to false
db.CreateTable<MyPetaPOCO>(false);
}
}
}
Run Code Online (Sandbox Code Playgroud)
如何在不直接访问数据库的情况下修改现有数据库(我想添加一列)?我需要使用代码,因为主机尚未提供访问权限。我认为我应该能够在此ApplicationStarted重写事件中执行此操作,但我不知道如何操作。
编辑
我应该使用Somel Fluent Migrator吗
我已经开始在 dotnetnuke 7 中使用 DAL2。我有一些复杂的查询,我已经在我的实例使用的 SQL 服务器数据库中创建了视图。从这些视图访问简单选择的最佳实践是什么。
如果我使用以下内容,那么这会绕过 dbOwner 和 ObjectQualifier:
Public Function GetProducts_Short_Active() As IEnumerable(Of Object)
Using ctx As IDataContext = DataContext.Instance
Return ctx.ExecuteQuery(Of Object)(CommandType.Text, "SELECT * FROM dbo.vw_ProductList_Short_Active", Nothing)
End Using
End Function
Run Code Online (Sandbox Code Playgroud)
问题: 或者我应该为每个 sql-server-view 定义一个类和属性(就像我为每个表所做的那样),表名注释是视图的名称,如下所示?
<TableName("vw_ProductList_Short_Active")> _
<PrimaryKey("ProductId")> _
<Cacheable("ProductList_Short_Active", CacheItemPriority.Default, 20)> _
<Scope("PortalId")>
Public Class ProductList_Short_Active
''view properties go here
End Class
Run Code Online (Sandbox Code Playgroud)
这篇文章似乎表明我不应该使用视图,而是使用 iEnumerable 的可忽略列扩展我的产品类,这些列代表我需要的“连接”数据记录。那是准确的吗?
我有一张名为 Car
Table car ( id int NOT NULL, plate int NOT NULL, sent_to_server bit NOT NULL );
Run Code Online (Sandbox Code Playgroud)
我想选择所有尚未发送到服务器的汽车
SELECT *
FROM car
WHERE sent_to_server = 0;
Run Code Online (Sandbox Code Playgroud)
然后我应该更新我的数据库
UPDATE car
SET sent_to_server = 1
WHERE sent_to_server = 0;
Run Code Online (Sandbox Code Playgroud)
我有多个线程所以这行不通(多个线程同时读取和写入数据库-(我使用 sql server))
如何在一个查询中执行 2 个查询?或者有更好的解决方案!?
注意:我将 C# 与 petapoco 库一起使用(如果重要的话!)
我正在尝试使用Peta POCO ORM,我非常喜欢它,但是有一件事我无法工作.我正在使用MS SQL和带uniqueidentifier的表作为主键.但是,当我插入新记录时,POCO会抛出一个InvalidCastException,试图将DBNull强制转换为Guid.我创造了一个简单的例子.MS SQL表定义:
CREATE TABLE MyTable
(
id uniqueidentifier NOT NULL DEFAULT newid(),
name nvarchar(50) NULL,
surname nvarchar(50) NULL,
CONSTRAINT pk_MyTable PRIMARY KEY (id)
)
Run Code Online (Sandbox Code Playgroud)
然后在C#中我有:
[PetaPoco.TableName("MyTable")]
[PetaPoco.PrimaryKey("id")]
public class MyTable
{
public Guid id { get; set; }
public string name { get; set; }
public string surname { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
最后我尝试插入新记录:
using (var conn = new SqlConnection(myConnString))
{
conn.Open()
using (var db = new PetaPoco.Database(conn))
{
for (int i = 0; i < 3; …Run Code Online (Sandbox Code Playgroud) 我在 C# WepApi 上使用 PetaPoco,我必须执行一个存储过程来删除许多表上的行。删除它的行数是可变的(可以是几个或太多),因此,有时 PetaPoco 会抛出超时异常。使用 PetaPoco 是否有可能“调用”存储过程并在过程完成之前关闭连接。存储过程不返回任何值,WebApi 不需要知道它何时结束......
我第一次使用 PetaPoco,并收到此错误:
An unhandled exception of type 'System.InvalidOperationException' occurred in Anonymiser.exe. Additional information: There is already an open DataReader associated with this Command which must be closed first.
Run Code Online (Sandbox Code Playgroud)
根据以下问题和给出的答案...
...建议这是对同一数据库/资源的多个请求的问题,但他们的解决方案是每个请求使用一个数据库连接,只是我不在复杂的 web 应用程序中,我正在运行单线程控制台应用程序,我想一个 Web 应用程序需要在一个请求中进行多次查询和更新以及所有内容(类似于我正在做的事情,select, loop results, update on each row)。
我已经在下面发布了相关代码,第一位是使用泛型和反射基本上调用“查询”来从表中获取所有数据(旨在不知道我希望随机化的数据的数据库结构),然后我插入随机数据后更改每一行中的数据并“更新”每一行,就像这样......
//select all data in a table
// non-generic version :: db.query<db_table>("select * from db_tableName");
var typedMethod = queryMethodInfo.MakeGenericMethod(t);
var allRows = typedMethod.Invoke(db, new Object[] { "select * from " …Run Code Online (Sandbox Code Playgroud) 有没有办法使用插入查询的参数?我尝试时收到以下错误.
/// <summary>
/// Set active survey
/// </summary>
public int SetSurveyActive(int brandId, int surveyId)
{
Sql sql = new Sql()
.Append("INSERT INTO CF.ActiveSurvey(BrandId, SurveyId")
.Append("VALUES(@0,@1)",brandId,surveyId);
var result = database.Execute(sql);
return Convert.ToInt32(result);
}
Run Code Online (Sandbox Code Playgroud)

petapoco ×11
c# ×7
sql ×3
c#-4.0 ×2
orm ×2
sql-server ×2
asp.net ×1
dotnetnuke ×1
dotnetnuke-7 ×1
linq ×1
t-sql ×1
transactions ×1
umbraco ×1
umbraco6 ×1
vb.net ×1