-
Notifications
You must be signed in to change notification settings - Fork 860
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
order和detail表,如何设置detail的联合主键和自动增长 #23
Comments
[Column(IsPrimary = true] [Column(IsPrimary = true] 这样应该可以,或者FluentApi方式配置,参考语法 fsql.CodeFirst |
谢谢。不过好像不能联合主键自增。如果OrderID是新的,Id也从1开始。 |
确实不可以 |
改用sqlserver,提示无法将多个 PRIMARY KEY 约束添加到表 'dbo.xxxx'。实体定义和数据库选择相关吗?sqlserver如何定义联合主键? |
不相关的,可能是数据存在有重复。 或者通过FreeSqlBuilder 创建的时候,.UseCommandMonitor,打印命令,看看执行的迁移语句,在这个贴发出来。 |
use [Test]; |
应该是个bug,修复好了通知你 |
这条可以改正确了执行,再次迁移时,结构没变化不会重新创建。 |
- 修复 SqlServer CodeFirst 迁移多主键的 bug #23;
@zhusheping 同时增加了测试多主键迁移的单元测试: |
联合主键可以了。 |
谢谢反馈,目前是参考abp vnext的接口,它也没支持多主键的仓储。 多主键时候,用这个仓储会影响Find Get Delete TKey的方法,传入是实体的重载方法没影响。可以避开使用这几个方法。 我目前在整合DbContext,那里面会有与现在相同的仓储实现,并且包含了状态跟踪。目前基本完成开发,待测试完成可以考虑迁移过去使用。多主键的问题会在这里得以解决。 |
状态跟踪,即Find实体后,设置指定的属性值,修改时只会更新变化的字段。 然后目前也实现了乐观锁,更新是比较放心的。 目前还在测试中…… |
可以考虑在项目内实现这个扩展方法,适合联合主键的仓储类操作。 |
using (var uow = fsql.CreateUnitOfWork()) 提示: |
flow 的值,和实体发给我测试一下 |
public partial class FlowModel
{
public int UserId { get; set; }
public int Id { get; set; }
public int? ParentId { get; set; }
public string Name { get; set; }
public DateTime CreateTime { get; set; }
public DateTime LastModifyTime { get; set; }
public string Desc { get; set; }
}
FlowModel flowModel = new FlowModel()
{
CreateTime = DateTime.Now,
Name = "aaa",
LastModifyTime = DateTime.Now,
UserId = 1,
};
fsql.CodeFirst.ConfigEntity<FlowModel>(f =>
{
f.Property(b => b.UserId).IsPrimary(true);
f.Property(b => b.Id).IsPrimary(true);
f.Property(b => b.Name).DbType("nvarchar(200)").IsNullable(false);
}
…------------------
Deep Mind Solutions. We Help .Solutions for Printing Industry
Name:朱社平
Mob: +8618993794536
[email protected]
Guangzhou, China
------------------ 原始邮件 ------------------
发件人: "2881099"<[email protected]>;
发送时间: 2019年4月19日(星期五) 中午11:34
收件人: "2881099/FreeSql"<[email protected]>;
抄送: "阿平"<[email protected]>; "Mention"<[email protected]>;
主题: Re: [2881099/FreeSql] order和detail表,如何设置detail的联合主键和自动增长 (#23)
flow 的值,和实体发给我测试一下
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.
|
收到,我正在路上,大约30分钟后测试 |
我明白你的意思了,你是想id会联合主键下的自增是吧,谢谢反馈。正在支持,预计1小时后发布 nuget |
MySql.Data.MySqlClient.MySqlException:“Incorrect table definition; there can be only one auto column and it must be defined as a key” 这种联合主键,带自增在 mysql 下不被支持 |
System.InvalidOperationException:“ExecuteScalar requires the command to have a transaction when the connection assigned to the command is in a pending local transaction. The Transaction property of the command has not been initialized.” 试出你的错误了,sqlserver 下发生的,原因检查后再说明 |
最新结果:pgsql/sqlite/pgsql 同样的操作没报错 |
原因找到了,如果 SqlConnection 开启了事务,SqlCommand 要求同时设置 SqlConnection 和 SqlTransaction,才可以。 其他数据库的实现没有这个问题。。 |
需要同时设置 SqlCommand.Connection + Transaction
v0.5.2 nuget 包发布中,稍后再试。 |
Id = 0 的原因: |
这个贴楼层太高了,下次可以考虑开新贴,哈哈 |
数据库为Sqlite
1、比如order有Id整形主键,detail表有OrderId 和 Id,如何设置OrderId + Id联合主键
2、实体对象如何定义才会生成表外键。按照导航属性设置后,fsql.CodeFirst.SyncStructure,数据库里面没有外键。
The text was updated successfully, but these errors were encountered: