我有一个这样的表结构:
ID Code Value
1 2 text1
2 3 text3
2 4 text4
Run Code Online (Sandbox Code Playgroud)
这里 ID 和 Code 形成复合主键,即在上表中不能有 ID = 2 和 Code = 4 的另一行。
现在我们使用实体框架核心,我有一个名为 Branch 的类(代表组合键),如下所示:
public class Branch
{
public int ID {get; set;}
public int Code {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
List<Branch>其次我也有一个。现在我想做两件事:
首先进行一次数据库调用并获取整个分支列表的完整对象(ID、代码、值)。
之后,我将更改每个对象的“值”。
然后我想进行一次数据库调用并保存每一行更新的“值”。
目前我正在循环中执行此操作,因此效率低下。
foreach(var x in listOfBranch)
{
var record = context.Table.Find(x.ID, x.Code);
record.Value = "new value";
context.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)
我们怎样才能在一次通话中做到这一点?谢谢。
c# entity-framework composite-key dbcontext entity-framework-core
我是 dynamodb 的新手,并尝试为附加访问模式创建全局二级索引。
如何使用复合排序键创建 dynamoDB GSI?
例如:我的主表存储订单,其中包含以下字段User_ID, ID, Type, Product_name, Total_Value,Created_at
在我的主表上,分区键是User_ID,排序键是Created_at,因此我可以获取 UI 的用户订单历史记录。我的应用程序还需要获取所有订单name、过滤type、排序total_value,Created_at
因此我正在考虑创建一个 GSI:
Product_nameType#Total_value#Created_at但是在创建新的GSI时我遇到了这个错误:
属性定义中未指定全局二级索引范围键。类型未知。
那么我应该怎么做才能创建该 GSI?
composite-key amazon-dynamodb secondary-indexes dynamodb-gsi
我有一个2枚举值表示对象的映射,我(当前)使用HashMap建模,其中2个枚举值用作键,对象是值.
这是低效的,因为我正在做的是为Enum1.values()x Enum2.values()的每个组合创建一个新的CompositeKey(Enum1 enum1,Enum2 enum2).
我想跳过新的CompositeKey()问题.
我目前想到的解决方法是计算了多次交涉从2个枚举,像int numericKey = enum1.ordinal() * 0xFFFF + enum2.ordinal();后来的时候我会尽map.get(numricKey)我仍然会自动拳击整数-因此创建新实例.
一个完美的解决方案(IMO)将Map实现(不必是通用的...),但我不认为这样的现有的Java.
另一种选择可能mapping = new Object[Enum1.values().length][Enum2.values().length]是我会用它查找,Object = mapping[enum1.ordinal()][enum2.ordinal()]但这似乎有点太"C'ish".
无论如何,运行时性能是这里最重要的方面.
欢迎评论.
谢谢,马克西姆.
当我想首先使用代码映射多对多关系时,我对EF 5有一些问题.这是我的情景:
public class SegFunction
{
public virtual string Idaplication {get;set;}
public virtual string Idfunction {get;set;}
public virtual List<SegRole> Roles { get; set; }
}
public class SegRole
{
public virtual int Idrole { get; set; }
public virtual List<SegFunction> Functions { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这是我的地图:
private void MapSegRole()
{
this.modelBuilder.Entity<SegRole>()
.Map(entity =>
{
entity.ToTable("seg_roles");
});
this.modelBuilder.Entity<SegRole>()
.Property(t => t.Idrole).HasColumnName("id_role");
this.modelBuilder.Entity<SegRole>()
.HasKey(c => c.Idrole);
modelBuilder.Entity<SegRol>()
.HasMany(i => i.Functions)
.WithMany(c => c.Roles)
.Map(
m =>
{
mc.ToTable("seg_role_function");
m.MapRightKey("id_role");
m.MapLeftKey("id_aplication");
m.MapLeftKey("id_function"); …Run Code Online (Sandbox Code Playgroud) 表定义:
CREATE TABLE [dbo].[tbl](
[Id1] [int] NOT NULL,
[Id2] [int] NOT NULL,
[Id3] [int] NOT NULL,
[IsActive] [bit] NOT NULL,
[CreatedTs] [datetime] NOT NULL,
CONSTRAINT [PK_tbl] PRIMARY KEY CLUSTERED
(
[Id1] ASC,
[Id2] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
)
GO
ALTER TABLE [dbo].[tbl] ADD CONSTRAINT [DF_tbl_IsActive] DEFAULT ((1)) FOR [IsActive]
GO
ALTER TABLE [dbo].[tbl] ADD CONSTRAINT [DF_tbl_CreatedTs] DEFAULT (getdate()) FOR [CreatedTs]
GO
Run Code Online (Sandbox Code Playgroud)
在上表中,我使用" Id1 "和" Id2 "组合复合主键.现在我想在复合主键中包含" Id3 …
我在double []中有5个预定义值的数据集:
A = {1.5, 1.8, 1.9, 2.3, 2.7, 3.0}
B = {1.2, 1.8, 1.9, 2.4, 2.9, 3.1}
.
.
E = {1.4, 1.7, 1.8, 1.9, 2.3, 2.9}
Run Code Online (Sandbox Code Playgroud)
我如何在枚举中表示它?我想把它编码为:
private enum Solutions{
A(double[]),
B(double[]),
C(double[]),
D(double[]),
E(double[]) ;
private double[] val;
private Solutions(double[] pVal){
this.val = pVal;
}
}
Run Code Online (Sandbox Code Playgroud)
这可能吗?
要么
什么是最好的数据类型或数据结构在java中表示这个?除了上面的double []数组,用户还可以定义自己的自定义数组.
任何建议请.
java ×2
azure ×1
c# ×1
collections ×1
dbcontext ×1
dynamodb-gsi ×1
enums ×1
fluent ×1
hashmap ×1
lookup ×1
many-to-many ×1
performance ×1
sql ×1
sql-server ×1