是否可以使用 OrmLite 扩展方法UpdateOnly一次更新多个字段?
文档中给出的示例是:
db.UpdateOnly(new Person { FirstName = "JJ" }, p => p.FirstName);
Run Code Online (Sandbox Code Playgroud)
我可以提供一个包含多个字段的表达式吗?如果是这样,鉴于字段可能是不同的数据类型,最好使用什么运算符。
我正在尝试使用SqlBulkCopy并ServiceStack Ormlite编写了以下扩展方法:
public static void BulkInsertSqlServer<T>(this IDbConnection dbConn, string targetTable, IEnumerable<T> data, params string[] columns)
{
Ensure.NotNull(dbConn);
Ensure.That(dbConn.State == ConnectionState.Open);
Ensure.NotNullOrEmptyOrWhiteSpace(targetTable);
Ensure.NotNull(data);
Ensure.NotNullOrEmpty(columns);
var sqlConnection = dbConn as SqlConnection;
using (var bcp = new SqlBulkCopy(sqlConnection))
using (var reader = ObjectReader.Create(data, columns))
{
bcp.BatchSize = data.Count();
bcp.DestinationTableName = targetTable;
bcp.WriteToServer(reader);
}
}
Run Code Online (Sandbox Code Playgroud)
我正在使用的:
_connFactory = new OrmLiteConnectionFactory(connStr, SqlServerOrmLiteDialectProvider.Instance);
using (var db = _connFactory.Open())
using (var tran = db.BeginTransaction())
{
db.BulkInsertSqlServer("User", users, "Name", "Age");
var allRoles = new …Run Code Online (Sandbox Code Playgroud) 使用ServiceStack.OrmLite.Core包 (5.4.1) 并尝试通过执行以下操作获取ModelDefinition( ServiceStack.OrmLite.ModelDefinition)时出现运行时错误:
var model = ModelDefinition<T>.Definition;
Run Code Online (Sandbox Code Playgroud)
错误如下:
System.IO.FileLoadException: 'Could not load file or assembly 'System.ComponentModel.Annotations, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)'
Run Code Online (Sandbox Code Playgroud)
我试图安装 nuget System.ComponentModel.Annotations(4.5.0.0,因为 4.2.0.0 不可用)无济于事。我还尝试了遇到 System.IO.FileLoadException 时建议的各种修复,但没有任何效果。
该项目是一个 .Net Framework 4.7.1 项目,但 .Net Standard 项目包含在解决方案中,因此我需要运行 ServiceStack.OrmLite 的 .Core 版本。
我已经在两个工作区(两台单独的机器)上尝试过这个,(1) 如上所述,(2) 解决方案中没有 .Net Standard 项目。在 (2) 机器上,它在运行非核心版本的 时工作ServiceStack.OrmLite,但发生切换到ServiceStack.OrmLite.Core …
我刚开始发现serviceStack ORMlite,我正在试图弄清楚如何进行批量插入.在任何地方都有这样的例子吗?
提前致谢
我有以下POCO:
[Alias("Posts")]
public class Post : IReturn<Post>
{
[AutoIncrement]
[PrimaryKey]
public int PostId { get; set; }
public DateTime CreatedDate { get; set; }
[StringLength(50)]
public string CreatedBy { get; set; }
[StringLength(75)]
public string Title { get; set; }
public string Body { get; set; }
public int UpVote { get; set; }
public int DownVote { get; set; }
public bool IsPublished { get; set; }
public List<Comment> Comments { get; set; }
public List<Tag> Tags { get; …Run Code Online (Sandbox Code Playgroud) 我正在尝试探索ServiceStack.OrmLite的功能,并且无法理解是否可以使用bootstrap类进行配置(外键,数据类型,列索引,别名等)?我不想在我的实体类上使用数据注释属性.即使使用某种配置也会比属性更好.那是因为我希望将来有机会更换ORM.也许存在用于流畅配置的第三方库?
我有一张桌子
CREATE TABLE [dbo].[ServiceTestCase](
[SSN] [int] IDENTITY(600000001,1) NOT NULL,
[Description] [varchar](max) NULL,
[EmbeddedResponse] [varchar](max) NULL,
[ResponseType] [varchar](50) NULL,
[DocumentType] [varchar](50) NULL,
[Id] [uniqueidentifier] NOT NULL,
[ServiceType] [varchar](50) NOT NULL,
CONSTRAINT [PK_TestCase] PRIMARY KEY CLUSTERED
Run Code Online (Sandbox Code Playgroud)
我的课
public class ServiceTestCase
{
public ServiceTestCase ()
{
}
public string ServiceType { get; set; }
[ServiceStack.DataAnnotations.AutoIncrement]
public Guid Id { get; set; }
[ServiceStack.DataAnnotations.AutoIncrement]
public long SSN { get; set; }
public string Description { get; set; }
public string EmbeddedResponse { get; set; …Run Code Online (Sandbox Code Playgroud) 我正在尝试运行类似的查询:
sql = @"with t(id) as (select 1 )
select * from Project
where id > (select id from t)";
var projects = this.Db.Query<Project>(sql).ToArray();
Run Code Online (Sandbox Code Playgroud)
由于某种原因,OrmLite决定将sql视为"where"子句,因此最终运行的是这样的:
select field1, field2 from project where with t(id) .....
Run Code Online (Sandbox Code Playgroud)
它是否在查询的起始位置寻找"选择"?没有创建视图 - 有没有办法用CTE运行查询?
谁能告诉我如何正确地让ORMLite将枚举存储为整数?我知道这在2012年没有得到支持,但我发现一些单元测试的代码表明它应该现在可以正常工作,但事实并非如此.当我们尝试将列创建为ms sql中的varchar(max).我们目前使用一个被忽略的包装属性将枚举值转换为int,但是你不能将它用于查询等,所以它不太理想.
在我的ServiceStack应用程序中,我正在实现一个简单的聊天,其中2个用户可以进行对话.为简单起见,我刚刚创建了一个TextMessages表,其中包含以下字段:
public class TextMessage
{
[AutoIncrement]
[PrimaryKey]
public int Id { get; set; }
[References(typeof(MyUserAuth))]
public int FromUserId { get; set; }
[References(typeof(MyUserAuth))]
public int ToUserId { get; set; }
[Reference]
[ForeignKey(typeof(MyUserAuth))]
public MyUserAuth FromUser { get; set; }
[Reference]
[ForeignKey(typeof(MyUserAuth))]
public MyUserAuth ToUser { get; set; }
//TimeZoneInfo.ConvertTimeToUtc(dateNow);
public DateTime UtcReceivedOn { get; set; }
public string Text { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我的UserAuth继承了基础,并增加了2个字段:
public class MyUserAuth : UserAuth
{
public List<TextMessage> TextMessagesAsAuthor { get; set; }
public List<TextMessage> …Run Code Online (Sandbox Code Playgroud)