如何以编程方式从EF CodeFirst dbcontext获取dbset类的元数据?这是为了代码生成目的而循环.
我过去曾使用过Umbraco的早期版本,但目前正在评估Umbraco 7的新项目.我正在寻找比默认情况下建议的默认"txt"启动项目更传统的方法.还有其他与Umbraco 7兼容的入门套件吗?优选地,其具有新MVC Razor代码和页面层次结构的良好示例.
我正在 SQL Server 2016 中的 SSMS 中使用 JSON。有什么办法可以解决 FOR JSON 语句的结果显示为 XML 列的问题?
是否有任何设置更改、附加组件、外部工具等,甚至是 hack 来减轻痛苦?
在我的理想世界中,单击 JSON 列(或 XML 列)将在我选择的文本编辑器中打开,例如 Visual Studio Code,SSMS 知道列中的字符串是 JSON 并将其保存到文件带有 .json 扩展名。
我有一些来自 Asp.Net Core 5 Web 应用程序的代码,我想从控制台应用程序调用它们。
它正在整合,但我有一个问题尚未找到解决方案。给出控制台主要代码:
class Program
{
static void Main(string[] args)
{
var serviceCollection = new ServiceCollection();
ConfigureServices(serviceCollection);
var serviceProvider = serviceCollection.BuildServiceProvider();
serviceProvider.GetService<CodeGen>().Generate();
}
private static void ConfigureServices(IServiceCollection serviceCollection)
{
var configurationRoot = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appSettings.json", false)
.Build();
serviceCollection.AddOptions();
serviceCollection.Configure<AppSettings>(configurationRoot.GetSection("Configuration"));
// add services
serviceCollection.AddScoped<IDataRepo, DataRepo>()
.AddScoped<CodeGen>();
}
}
Run Code Online (Sandbox Code Playgroud)
以及正在做这项工作的类:
public class CodeGen
{
private readonly IDataRepo _dataRepo;
private readonly AppSettings _appSettings;
public CodeGen(IDataRepo dataRepo, AppSettings appSettings)
{
_dataRepo = dataRepo;
_appSettings = appSettings;
}
public void …Run Code Online (Sandbox Code Playgroud) 我正在使用Visual Studio Community 2019版本16.1.6,并在右键菜单中看到第一个菜单项为``在本地运行所选代码''。
突出显示代码并选择此功能似乎没有任何作用。我的猜测是,这与新的实时共享会话(?)有关。令人惊讶地谷歌搜索该短语不会返回任何有意义的结果或文档(至少在当前是这样)。
有任何想法吗?
默认情况下,EF6 将为每个层次结构表 (TPH) 映射一个基本抽象类及其派生类。
EF Core 不再遵循此逻辑,并要求选择派生类。文档指出:
按照约定,上下文中的 DbSet 属性中公开的类型将作为实体包含在模型中。还包括 OnModelCreating 方法中指定的实体类型,以及通过递归探索其他已发现实体类型的导航属性找到的任何类型。
如果您有一些子类型,那么使用这种方法并不难,因为您可以将它们添加为 DbSet,或者为每个子类型添加 HasDiscriminator().HasValue() ,映射如下:
builder.HasDiscriminator()
.HasValue<CommaSymbolRule>("CommaSymbolRule")
.HasValue<DashSymbolRule>("DashSymbolRule")
.HasValue<IsNumericSymbolRule>("IsNumericSymbolRule")
.HasValue<IsPunctuationSymbolRule>("IsPunctuationSymbolRule")
.HasValue<PeriodSymbolRule>("PeriodSymbolRule")
Run Code Online (Sandbox Code Playgroud)
在某些情况下,这是次优的,因为您可能有许多派生类。就我而言,我有一个规则引擎,并且不想单独映射每个规则。
有没有办法在 EF Core Table Per Hierarchy 场景中自动映射基类的子类型,而无需手动添加它们?
c# entity-framework discriminator entity-framework-core .net-core
我有一个使用 Func 参数的单元测试,我似乎无法使用最小起订量。查看 StackOverflow 上 Func 参数的其他示例,我认为这应该有效:
要测试的代码:
public class PatternManager : IPatternManager
{
private readonly ICacheManager _cacheManager;
private readonly IDataRepo _data;
public PatternManager(ICacheManager cacheManager, IDataRepo dataRepo)
{
_cacheManager = cacheManager;
_data = dataRepo;
}
public List<Pattern> GetAllPatterns()
{
var allPatterns = _cacheManager.Get(() => _data.GetAllPatterns(), nameof(_data.GetAllPatterns));
return allPatterns;
}
public Pattern GetBestPattern(int[] ids)
{
var patternList = GetAllPatterns().Where(w => w.PatternId > 1);
... More code...
}
...
}
public interface ICacheManager
{
T Get<T>(Func<T> GetMethodIfNotCached, string cacheName = null, int? …Run Code Online (Sandbox Code Playgroud)