小编ali*_*lik的帖子

如何将实体从一个Entity Framework上下文复制到另一个实体框架上下文?

如何将实体从一个上下文(继承DbContext)复制到另一个上下文?

我发现的所有东西只适用于ObjectContext但不适用于DbContext或使用DbContext但不起作用.

例如,我发现/尝试过:

  • 在CodeProject上使用ObjectContext:CloneHelper
  • 将LazyLoadingEnabled设置为false会导致无法填充ICollection <>属性(外键)
  • 将ProxyCreationEnabled设置为false会导致ICollection <>属性保持为null(外键)
  • Entry <> .State = Detached导致未填充ICollection <>属性(外键)(如果在附加属性之前设置),或者阻止清除Id(如果稍后设置).
  • AsNoTracking()导致异常(以下之一,取决于是否首先从父级的ICollection <>属性或首先插入父级)向远程上下文插入一个项目:
    • 父级:"ModelFirstSub_First_Target"角色中的对象无法自动添加到上下文中,因为它是使用NoTracking合并选项检索的.在定义关系之前,将实体显式附加到ObjectContext.
    • 项目:无法添加或附加对象,因为其EntityReference具有与此对象的EntityKey不匹配的EntityKey属性值.

我将它用于两个目的:

  1. 将所有内容从一个数据库复制到另一个数据库(目标将是原始数据库的克隆;远程数据库的本地副本).应保留一堆对象.
  2. 将所选实体从一个数据库添加或更新到另一个数据库(本地缓存中的上游更改为远程源).不需要保留新创建的对象的ID.

怎么做?

EF 6.1.1,.NET 4.5.2,C#

以下是尝试模拟第二个操作的测试代码(上游更改回远程数据库):

var addedFirst = localContext.Firsts.AsNoTracking().Single(m => m.Id == 4);
var updatedFirst = localContext.Firsts.AsNoTracking().Single(m => m.Id == 2);

addedFirst.Items.First().Id = 0;
addedFirst.Items.First().FirstId = 0;
addedFirst.Id = 0;

remoteContext.FirstItems.Add(addedFirst.Items.First());
remoteContext.Firsts.Add(addedFirst);

var originalFirst = remoteContext.Firsts.Single(m => m.Id == 2);
var originalItem = originalFirst.Items.First();
originalItem.Title = updatedFirst.Items.First().Title;
Run Code Online (Sandbox Code Playgroud)

这是模型:

public class ModelFirstBase …
Run Code Online (Sandbox Code Playgroud)

.net c# entity-framework entity-framework-6

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

如何在实体框架核心模型中使用C#8.0可空引用类型?

我在.NET Core 3.0项目上启用C#8.0可空引用类型。该项目使用Entity Framework Core 3.0访问数据库。

以下是标题不应该为null的数据模型。

public class Vehicle
{
    public int Id { get; private set; } 

    public string Title { get; private set; }

    // Entity Framework Core is instructed to bind to the private _drivers field in a configuration builder
    private readonly List<Driver> _drivers = new List<Driver>();
    public IReadOnlyCollection<Driver> Drivers => _drivers.AsReadOnly();

    private Vehicle() 
    {
    }

    public Vehicle(string title) 
    {
        this.Title = title;
    }

    public void AddDriver(string name)
    {
         this._drivers.Add(new Driver(name));
    }
 }

// A foreign …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework entity-framework-core .net-core nullable-reference-types

10
推荐指数
2
解决办法
420
查看次数

如何在 docker compose 中使用 : in name 定义环境值?

我想传递一个ABC:DEF名为docker-compose.yml.

怎么做?

如果我写在服务定义中

environment:
    ABC:DEF: ${ABC:DEF}
Run Code Online (Sandbox Code Playgroud)

我有

ERROR: Invalid interpolation format for "environment" option in service: "${ABC:DEF}"

编辑:这个问题的目标是了解是否可以使用包含:冒号的环境变量名称以及如何在docker-compose.yml. 从受影响容器内运行的“事物”的角度讨论使用冒号的替代方案:不是问题的一部分。

docker docker-compose

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

INSERT INTO ... SELECT 如果目标列具有生成的列

有一些表:

CREATE TABLE `asource` (
  `id` int(10) unsigned NOT NULL DEFAULT '0'
);

CREATE TABLE `adestination` (
  `id` int(10) unsigned NOT NULL DEFAULT '0',
  `generated` tinyint(1) GENERATED ALWAYS AS (id = 2) STORED NOT NULL
);
Run Code Online (Sandbox Code Playgroud)

我从asourceto复制一行adestination

INSERT INTO adestination 
SELECT asource.* 
FROM asource;
Run Code Online (Sandbox Code Playgroud)

以上产生一个错误:

Error Code: 1136. Column count doesn't match value count at row 1
Run Code Online (Sandbox Code Playgroud)

好的,要求我提及生成的查询很奇怪。但是好的,我将该列添加到查询中:

INSERT INTO adestination 
SELECT asource.*, NULL AS `generated`
FROM asource;
Run Code Online (Sandbox Code Playgroud)

这在 5.7.10 中运行良好。但是,它会在 5.7.11 中生成错误(由于修复 …

mysql insert-select virtual-column

7
推荐指数
2
解决办法
3426
查看次数

如何在 ASP.NET Core 2.2 中创建切换语言的链接?

一个网站支持多种语言。支持多语言(包括路由)的代码已经到位并可以工作。

本地化设置使用RouteDataRequestCultureProvider作为explaned https://joonasw.net/view/aspnet-core-localization-deep-dive

app.UseRouter(routes =>
{
    routes.MapMiddlewareRoute("{culture=en-US}/{*mvcRoute}", subApp =>
    {
        subApp.UseRequestLocalization(localizationOptions);

        subApp.UseMvc(mvcRoutes =>
        {
             // Routes are here
        }   
    });
});
Run Code Online (Sandbox Code Playgroud)

如何创建一个通用标签,以不同的语言显示当前页面?

理想情况下,我只需指定此链接应指向哪种语言,并应保留所有其他路由参数(如当前控制器、当前操作、当前路由模型),以便我可以在_Layout.cshtml?

c# asp.net-core

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

如何在ASP.NET Core 2中为所有Razor页面添加.html url后缀?

我有一个ASP.NET Core 2.0 MVC应用程序使用存储在/ Pages文件夹下的项目树中的Razor页面.

使用默认路由等设置项目.

我希望所有Razor页面在浏览器的地址栏中都有.html扩展名.

文件/Pages/test.cshtml目前可通过http:// localhost/test获得.我希望通过http://localhost/test.html提供此页面.

我试图理解路由设置,但没有足够的理解它来提供解决方案.

我应该写什么,以便通过.html后缀提供文件?

c# asp.net-mvc asp.net-core-mvc

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

SessionHandlerInterface :: write和SessionUpdateTimestampHandlerInterface :: updateTimestamp有什么区别?

PHP会话逻辑具有两个不同的SessionHandlerInterfaceSessionUpdateTimestampHandlerInterface接口,而SessionUpdateTimestampHandlerInterface接口还没有完全在该文档中描述的.

SessionHandlerInterface::writeSessionUpdateTimestampHandlerInterface::updateTimestamp功能的感觉颇为相似.两者都有相同的参数(会话ID和会话数据)并返回一个bool.

这两个功能有什么区别?

应该如何区分实现这两个功能的代码?

如果没有为updateTimestamp函数提供时间戳,代码应该如何更新时间戳?

编辑:我已经创建了一个关于缺少文档PHP错误.

php session

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

如何正确管理PHP会话cookie过期?

PHP 网站使用 cookie 在浏览器端存储会话 ID。目标是在最近的用户与站点交互后的特定时间段内,PHP 会话将被视为有效。

PHP 会话有两个不同的超时:

  • cookie 过期 - 当浏览器忘记包含会话 ID 的 cookie 时
  • 会话过期 - 当服务器忘记会话数据时

PHP 内置逻辑仅在第一次session_start()调用时发送 cookie ,即生成会话 ID。cookie 不会在进一步请求时发送,因此 cookie 过期时间永远不会延长。

与此相反,每次请求都会延长 PHP 会话到期时间。

因此,如果用户持续与站点交互,PHP 会话过期时间会延长,但 cookie 过期时间保持其原始值。

例子:

  • PHP 会话和 cookie 寿命设置为 5 个时间点
  • 用户在时间点 1、2 和 4 与站点交互

时间点/PHP 会话过期/cookie 过期

1 / 6 / 6

2 / 7 / 6

4 / 9 / 6

  • 如果确定在时间点 7 与站点交互,则 cookie 已经过期,因此不会将其发送到服务器。因此,即使 PHP 会话在技术上有效,请求也会像 PHP 会话已过期一样。

如何强制 PHP 在每个(或几乎每个)请求上更新 cookie 的过期时间?最佳做法是什么? …

php cookies session session-cookies

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

在哪里可以找到要在 Microsoft Flow 的 Azure REST API 调用中使用的受众和客户端 ID 字段?

我正在尝试从 Microsoft Flow 调用 CDN Purge 的 Azure REST API url。

  • 我发现 HTTP - HTTP 是使用 Azure 的最佳操作,HTTP 听起来专门用于访问资源而不是(仅)调用。
  • 为此,我在 Azure Active Directory 中创建了一个 Web 应用程序/API 应用程序。
  • API 调用需要进行身份验证,因此我选择了 Active Directory OAuth。
  • 我将租户 ID 填写到租户中,选择“秘密”作为凭证类型,并将应用程序的密码(密钥)放入“秘密”字段中。

但是,我不知道要在“受众”和“客户 ID”字段中输入什么内容。

我尝试搜索文档但没有找到任何相关结果。我认为其中之一应该是应用程序 ID。

受众和客户 ID 字段中应输入什么内容以及如何查找这些值?

是否还需要执行其他操作才能使其正常工作(例如设置允许清除 CDN、更新清单、分配角色的权限)?

PS:我正在进行BadRequest. Http request failed as there is an error getting AD OAuth token: 'AADSTS50105: Application '<appId>' is not assigned to a role for the application '<appIdUri>'.我最近的尝试。

azure azure-cdn azure-active-directory power-automate

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

使用composer自动加载时如何获取加载类的文件路径?

PHP 7.1 应用程序使用 composer 的自动加载器来查找类定义。命名空间映射在composer.json文件中定义。

该应用程序还使用 ICU 模块的ResourceBundle类从*.res文件加载可本地化的文本。每个具有可本地化文本的类都有自己的一组*.res文件(每种语言一个文件)。提供本地化支持的代码获取应加载其文本的类的完全限定名称。

我想让这些*.res文件位于它们各自的类文件旁边(或在子文件夹中,例如/locale/)。为此,如果我能以某种方式获取类文件路径而无需在 Composer 的自动加载器中重新实现现有代码,我将表示欢迎。

理想情况下,我应该能够获取路径,而无需实例化类并以某种方式获取其文件位置。

这种方法可行吗?你有什么建议?

php autoload composer-php

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

如何在尊重路由配置的同时解决Kentico Cloud中的内容项链接?

ASP.NET Core 2.2网站显示了来自Kentico Cloud CMS的数据。其中一些项目包含富文本字段。这些字段可能包含指向其他内容项的链接。这些链接应由网站解析为URL。

文档建议通过实现IContentLinkUrlResolver接口来完成此操作。但是,对于我们的网站而言,该样本实在是太虚伪了。我们的解析器需要知道请求的上下文(例如当前的UI文化,因为该站点是多语言环境)和路由定义,因为这是定义URL外观的唯一位置。

实际上,解析程序需要能够调用Url.Action,就像它可以在视图内部一样。

网址解析器应尊重路由和当前的ui文化。预期其逻辑如下:

if (the linked content item type is Page)
{
    Url.Action("Page", "Home", new [] { codename = content item’s codename });
}
else if (the linked content item type is PageFont)
{
    Url.Action("Font", "Home", new [] { codename = content item’s codename });
}
else
{
    throw an error about an unsupported content type.
}
Run Code Online (Sandbox Code Playgroud)

规则定义为:

var localizationOptions = app.ApplicationServices.GetService<IOptions<RequestLocalizationOptions>>();

app.UseRouter(routes =>
{
    routes.MapMiddlewareRoute("{culture=en-US}/{*mvcRoute}", subApp =>
    {
        subApp.UseRequestLocalization(localizationOptions.Value);

        subApp.UseMvc(mvcRoutes …
Run Code Online (Sandbox Code Playgroud)

c# kentico asp.net-core kentico-kontent

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