标签: composite-key

Entity Framework Core 读取和更新多行 - 复合主键

我有一个这样的表结构:

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

1
推荐指数
1
解决办法
2182
查看次数

Dynamodb 全局二级索引复合排序键

我是 dynamodb 的新手,并尝试为附加访问模式创建全局二级索引。

如何使用复合排序键创建 dynamoDB GSI?

例如:我的主表存储订单,其中包含以下字段User_ID, ID, Type, Product_name, Total_Value,Created_at

在我的主表上,分区键是User_ID,排序键是Created_at,因此我可以获取 UI 的用户订单历史记录。我的应用程序还需要获取所有订单name、过滤type、排序total_valueCreated_at 因此我正在考虑创建一个 GSI:

  • 分区键:Product_name
  • 排序键:Type#Total_value#Created_at

但是在创建新的GSI时我遇到了这个错误:

属性定义中未指定全局二级索引范围键。类型未知。

那么我应该怎么做才能创建该 GSI?

composite-key amazon-dynamodb secondary-indexes dynamodb-gsi

1
推荐指数
1
解决办法
2815
查看次数

使用密钥复合密钥进行高效的HashMap检索(从2个枚举构建)

我有一个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".

无论如何,运行时性能是这里最重要的方面.

欢迎评论.

谢谢,马克西姆.

java lookup performance hashmap composite-key

0
推荐指数
1
解决办法
3894
查看次数

当实体使用复合键时,实体框架5可以多对多

当我想首先使用代码映射多对多关系时,我对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)

many-to-many fluent composite-key entity-framework-5

0
推荐指数
1
解决办法
3378
查看次数

无法更改Azure Sql中的复合主键

表定义:

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 …

sql sql-server composite-key azure azure-sql-database

0
推荐指数
1
解决办法
548
查看次数

数组作为java中枚举构造函数的参数

我在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 collections enums composite-key

-1
推荐指数
1
解决办法
882
查看次数