Closed ErikEJ closed 4 years ago
Test (brittle, do not commit);
[Theory]
[InlineData(false, "en-US")]
[InlineData(true, "en-US")]
[InlineData(false, "tr-TR")]
[InlineData(true, "tr-TR")]
public void WriteCode_Should_Generate_Context_File(bool useDataAnnotations, string culture)
{
// Arrange
Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(culture);
var options = ReverseEngineerOptions.DbContextOnly;
var scaffolder = CreateScaffolder(options);
// Act
var model = scaffolder.ScaffoldModel(
connectionString: Constants.Connections.SqlServerConnection,
databaseOptions: new DatabaseModelFactoryOptions(),
modelOptions: new ModelReverseEngineerOptions(),
codeOptions: new ModelCodeGenerationOptions
{
ContextNamespace = Constants.Parameters.RootNamespace,
ModelNamespace = Constants.Parameters.RootNamespace,
ContextName = Constants.Parameters.ContextName,
ContextDir = Constants.Parameters.ProjectPath,
UseDataAnnotations = useDataAnnotations,
Language = "C#",
});
// Assert
var files = GetGeneratedFiles(model, options);
object expectedContext = useDataAnnotations
? ExpectedContextsWithAnnotations.ContextClass
: ExpectedContexts.ContextClass;
var context = files[Constants.Files.CSharpFiles.DbContextFile];
Assert.Equal(expectedContext, context);
}
Fix:
protected override IDictionary<string, string> GetPartialTemplates(
LanguageOptions language = LanguageOptions.CSharp)
{
DbContextTemplateFiles.TryGetValue(Constants.DbContextImportTemplate, out TemplateFileInfo importFile);
var importTemplateFile = FileService.RetrieveTemplateFileContents(
importFile.RelativeDirectory, importFile.FileName);
DbContextTemplateFiles.TryGetValue(Constants.DbContextCtorTemplate, out TemplateFileInfo ctorFile);
var ctorTemplateFile = FileService.RetrieveTemplateFileContents(
ctorFile.RelativeDirectory, ctorFile.FileName);
DbContextTemplateFiles.TryGetValue(Constants.DbContextDbSetsTemplate, out TemplateFileInfo propertyFile);
var propertyTemplateFile = FileService.RetrieveTemplateFileContents(
propertyFile.RelativeDirectory, propertyFile.FileName);
var templates = new Dictionary<string, string>
{
{
Constants.DbContextImportTemplate.ToLower(CultureInfo.InvariantCulture),
importTemplateFile
},
{
Constants.DbContextCtorTemplate.ToLower(CultureInfo.InvariantCulture),
ctorTemplateFile
},
{
Constants.DbContextDbSetsTemplate.ToLower(CultureInfo.InvariantCulture),
propertyTemplateFile
},
};
return templates;
}
@tonysneed Any plans for a fix?
Fixed! :)
Great, thanks! will you mention me when an updated Nuget package is published?
@ErikEJ Yes I will! Going to merge some PR’a and release a new version to NuGet this weekend.
@ErikEJ Published v3.7.0 of the NuGet package. Here are the release notes.
see https://github.com/ErikEJ/EFCorePowerTools/issues/366