kogel-net / kogel.dapper.extension Goto Github PK
View Code? Open in Web Editor NEWorm框架 dapper to linq
orm框架 dapper to linq
工程:Kogel.Dapper.Extension.Mssql
文件:BaseExpressionVisitor.cs
代码行数:517
protected override Expression VisitConstant(ConstantExpression node)
if (FieldName != null)
这个判断有问题。对于u=>true这样的lambda表达式解析错误。
对于FieldName的判断要改成
if(!string.IsNullOrEmpty(FieldName))
才能正常。
The DynamicParameters with GUID are not working.
q = conn.CommandSet<ContactModel>() .Insert(new ContactModel { ContactKey = Guid.NewGuid(), FirstName = "...", });
I think this is the reason:
`static SqlMapper()
{
//Register Guid Resolution
SqlMapper.RemoveTypeMap(typeof(Guid));
SqlMapper.AddTypeHandler(typeof(Guid), new GuidTypeHanlder());
SqlMapper.RemoveTypeMap(typeof(Guid[]));
SqlMapper.AddTypeHandler(typeof(Guid[]), new GuidArrTypeHanlder());
}`
调用dbConnection.QuerySet().Where(expression).Get()的时候报错
The member Param_000_ of type <>f__AnonymousType0`1[[System.String, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]] cannot be used as a parameter value。
使用的版本是:.net core 3.1 Kogel.Dapper.Extension.MySql 3.2.2.3
环境:MySQL5.7,Net Standard 2.0,Dapper1.60.6,Kogel3.1.5
复现:表Man字段Sex类型tinyint(1),有一条数据【2】,实体ManModel属性Sex类型SByte
var mModelList = conn.QuerySet().PageList(1, 10);
var mModel = mModelList[0];//此时mModel.Sex的值为【1】
有什么问题可以在这里提问
同标题 ,in 查询不支持guid,只支持整型,我的数据库Id的guid,当要用到in查询的时候,报错了
我有一个表 ,然后有个视图,继承于这个表,然后 用视图去查询的时候 sql语句的字段绑定到了 基类上面去了
`
public class VIPClassProGressInfo{
public int UserID { get; set; }
}
public class V_VIPSignInInfo : VIPClassProGressInfo{
public string Name{ get; set; }
}
`
`
var query = await connection.QuerySet<V_VIPSignInInfo>();
query = query.Where(c => c.UserID == 0);
var page = query.PageList(1, 10);
`
exec sp_executesql N'SELECT COUNT(1) FROM [VIPClassProGressInfo] WHERE 1=1 AND 1=1 AND (([VIPClassProGressInfo].[UserID] = @VIPClassProGressInfo_UserID_0_1)) ',N'@VIPClassProGressInfo_UserID_0_1 int',@VIPClassProGressInfo_UserID_0_1=0
3.1.8版本之前使用分页查询时可能会出现,可以在连接字符串后面加上MultipleActiveResultSets=true
例如
server=localhost;database=Lige;user=sa;password=!RisingupTech/././.;max pool size=300;MultipleActiveResultSets=true
位于工程 Kogel.Dapper.Extension.Mssql 中,其他库未测试。
文件SQLMapper.extension.cs 中的 GuidTypeHanlder类
数据库中的guid字段(比如mssql的字段为 uniqueidentifier 类型),那么最新的3.2.0.2版本是有问题的。
SetValue 和Parse方法对 参数的处理都不对。
需要改成如下:
public override void SetValue(IDbDataParameter parameter, Guid value)
{
parameter.Size = 10;
parameter.DbType = DbType.Guid;
//parameter.Value = value.ToString();
parameter.Value = value;
}
public override Guid Parse(object value)
{
if (value.GetType().Name == "Guid")
{
return (Guid)value;
}
else
{
return Guid.Parse(value.ToString());
}
}
以上改动在我的项目中运行通过。
查询的时候,类型是Guid会报转换错误,应该是DbType为String的原因
`public class GuidTypeHanlder : SqlMapper.TypeHandler
{
public override void SetValue(IDbDataParameter parameter, Guid value)
{
parameter.Size = 10;
parameter.DbType = DbType.String;
//parameter.Value = value.ToString();
parameter.Value = value;
}
public override Guid Parse(object value)
{
//return Guid.Parse((string)value);
return Convert(value);
}
internal static Guid Convert(object value)
{
if (value.GetType().Name.Contains("Guid"))
{
return (Guid)value;
}
else
{
return Guid.Parse(value.ToString());
}
}
}
public class GuidArrTypeHanlder : SqlMapper.TypeHandler<Guid[]>
{
public override void SetValue(IDbDataParameter parameter, Guid[] value)
{
parameter.Size = 10;
parameter.DbType = DbType.String;
parameter.Value = value;
}
public override Guid[] Parse(object value)
{
List<Guid> guids = new List<Guid>();
foreach (var item in value as string[])
{
guids.Add(GuidTypeHanlder.Convert(value));
}
return guids.ToArray();
}
}`
希望支持sqlite,现在用mysql挺稳定的。有项目需要用sqlite
当主表A和关联表B的字段相同时,其中B为导航属性,当获取数据时,导航表B中的字段和主表A中的字段相同时没有赋值,如:主表A有InstrId,关联表也有InstrId,作为导航属性的B表InstrId该列未赋值
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.