小编Sea*_*man的帖子

具有一些共享数据的多租户数据库

我在所有租用的数据库上都有一个完整的多租户数据库和TenantID.这一切都很好,除了现在我们要求允许租用的数据库"链接"共享数据.因此,例如,用户可以创建自己的"银行"记录并将帐户链接到他们,但他们也可以将帐户链接到所有租户共享的"全局"银行记录.

我需要一个优雅的解决方案,保持参照完整性

到目前为止我提出的方法:

  1. 复制:所有共享数据都复制到每个租户,可能带有"系统"标志.对共享数据的更改涉及所有租户的大量更新.可能是最简单的解决方案,但我不喜欢数据重复
  2. 特殊ID:共享数据的所有链接都使用特殊ID(例如,负ID号).这些表明TenantID不在关系中使用.您不能使用FK来正确执行此操作,如果您有任何FK,则肯定无法在租户中重复使用ID.只有触发器才能用于完整性.
  3. 单独的ID:所有可以链接到共享数据的表都有两个FK; 一个使用TenantID并链接到本地​​数据,另一个不使用TenantID并链接到共享数据.约束表示要使用一个或另一个,而不是两者.这可能是最"纯粹"的方法,但它似乎......丑陋,但也许不像其他人那样难看.

所以,我的问题分为两部分:

  • 有没有我没考虑过的选择?
  • 有没有人有这些选项的经验,并对优缺点有任何反馈?

sql-server shared foreign-keys multi-tenant

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

XUnit与Cake一起使用.NET Core

我有一个相对简单的解决方案。在MSBuild下(VS 2017 Mac中),所有工作均正常。我正在创建一个Cake构建脚本,但是我无法使单元测试正常工作。有无数的示例,但似乎没有一个有效了。有些人要求使用DotnetCoreTest,大多数要求使用XUnit2。在我的项目中都没有任何作用。

运行XUnit2时出现以下错误: System.InvalidOperationException: Unknown test framework: could not find xunit.dll (v1) or xunit.execution.*.dll (v2) in /Users/dev/Projects/MyProject/tst/MyProject.Serialization.UnitTests/bin/Release/netcoreapp1.1

该输出绝对有效,文件实际上不存在。这是我的单元测试项目的参考:

<ItemGroup>
    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.0.0" />
    <PackageReference Include="xunit" Version="2.2.0" />
    <PackageReference Include="xunit.runner.visualstudio" Version="2.2.0" />
    <PackageReference Include="xunit.runner.console" Version="2.2.0" />
    <PackageReference Include="FluentAssertions" Version="4.19.2" />
    <PackageReference Include="Moq" Version="4.7.99" />
    <PackageReference Include="FluentAssertions.AspNetCore.Mvc" Version="0.7.0-beta1" />
    <PackageReference Include="AutoMapper" Version="6.1.1" />
    <PackageReference Include="ExpectedObjects" Version="1.3.0" />
    <PackageReference Include="OpenCover" Version="4.6.519" />
    <PackageReference Include="xunit.extensibility.execution" Version="2.2.0" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)

我已引用xunit.runner.consoleAND xunit.extensibility.execution,但这些未复制到目标目录。.NET Core似乎没有任何方法可以强制执行此操作,即使我手动复制它们,测试程序集仍然无法加载。

这是我的蛋糕测试脚本:

#tool nuget:?package=NUnit.ConsoleRunner&version=3.4.0
#tool nuget:?package=xunit.runner.console
...
Task("Test")
    .IsDependentOn("Build")
    .Does(() …
Run Code Online (Sandbox Code Playgroud)

c# unit-testing .net-core cakebuild

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