我们目前正在使用下面的方法,该方法依赖于抽象存储库中的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
我正在使用一个首先使用EF代码的系统,我想在表上使用许多SQL Server稀疏列.我目前的解决方案是删除EF创建的表,并在数据库初始化期间通过脚本重新添加.这是可以在从EntityTypeConfiguration或其他方式继承的类中使用Fluent API配置的吗?
如下面的 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)