小编cRe*_*lts的帖子

如何使用Entity Framework Core获取主键值

我们目前正在使用下面的方法,该方法依赖于抽象存储库中的IObjectContextAdapter.从我正在阅读的内容看来,与ObjectContext相关的任何内容都被从实体框架核心中删除.下面的方法是我们唯一依赖于与ObjectContext相关的东西的地方.

我们想升级到Entity Framework Core.这是我们唯一的路障.有没有办法通过Entity Framework Core apis获取实体主键的值?

// Entity Framework
public virtual int GetKey(T entity)
{
    var oContext = ((IObjectContextAdapter)_DbContext).ObjectContext;
    var oSet = oContext.CreateObjectSet<T>();
    var keyName = oSet.EntitySet.ElementType
                                .KeyMembers
                                .Select(k => k.Name)
                                .Single();

    return (int)entity.GetType().GetProperty(keyName).GetValue(entity, null);
}
Run Code Online (Sandbox Code Playgroud)

entity-framework primary-key repository-pattern entity-framework-core

15
推荐指数
3
解决办法
1万
查看次数

使用EF Code First Fluent API时如何将数据库列设置为"稀疏"?

我正在使用一个首先使用EF代码的系统,我想在表上使用许多SQL Server稀疏列.我目前的解决方案是删除EF创建的表,并在数据库初始化期间通过脚本重新添加.这是可以在从EntityTypeConfiguration或其他方式继承的类中使用Fluent API配置的吗?

entity-framework sparse-matrix code-first dbcontext

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

在azure devops部署作业中,我们如何将变量从jobs.deployment.strategy.runOnce.deploy.steps传递到on.failure.steps

如下面的 yaml 所示,当我们知道在parameters.deploymentTemplate 中包含的任何任务期间部署失败的原因时,我们会填充deploymentFailureReason 变量。我们希望能够在从 on:failure 作业调用时将该原因传递给我们的部署跟踪器。

我们知道如何在作业之间和阶段之间传递变量。两者都需要了解我们试图从中获取变量的作业和/或阶段。这些作业是基于每个虚拟机创建的,目前我们无法找到访问在部署作业中创建的 failure.reason 输出变量的方法。我们已经验证,当到达下面名为“failure”的 powershell 步骤时,deploymentFailureReason 已填充。只是似乎无法找到一种方法来完成 on:failure 工作。

我们曾考虑过将deploymentFailureReason写入文件并从on:failure作业中读取它,因为两者都在同一台机器上运行,但肯定有更好的方法。

我们欢迎任何想法、澄清问题或想法,这些可能会促使我们摆脱当前限制我们对此问题思考的框框。

parameters:
  - name: deploymentTemplate
    type: string

stages:
  - stage: DevStage
    jobs:
      - deployment: Dev_Deployment
        variables:
          - name: deploymentFailureReason
            value: ''
  
        environment:
          name: Dev-VM
          resourceType: VirtualMachine
        workspace:
          clean: all
        strategy:
          runOnce:
            deploy:
              steps:
                - template: ./deployment-initialize.yml    
                - template: ${{ parameters.deploymentTemplate }}
                - powershell: |
                    Write-Output "were here"
                    Write-Output "deploymentFailureReason = $(deploymentFailureReason)"
                    
                    Write-Host "##vso[task.setvariable variable=reason;isOutput=true]$(deploymentFailureReason)"
                  name: failure
                  condition: failed()
            on:  # On success or failure …
Run Code Online (Sandbox Code Playgroud)

azure-deployment azure-pipelines

5
推荐指数
0
解决办法
374
查看次数