Skip to content

Commit db43de9

Browse files
committed
Skip Create/Update models for views; improve DI setup
1 parent 5214ae1 commit db43de9

4 files changed

Lines changed: 59 additions & 7 deletions

File tree

sample/Tracker/Tracker.Web/Startup.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
using AutoMapper;
1+
using AutoMapper;
22
using FluentValidation;
33
using Microsoft.AspNetCore.Builder;
44
using Microsoft.AspNetCore.Hosting;
55
using Microsoft.EntityFrameworkCore;
66
using Microsoft.Extensions.Configuration;
77
using Microsoft.Extensions.DependencyInjection;
88
using Microsoft.Extensions.Hosting;
9-
using Microsoft.OpenApi.Models;
9+
using Microsoft.OpenApi;
1010
using Tracker.Core.Data;
1111

1212
namespace Tracker.Web
@@ -28,7 +28,7 @@ public void ConfigureServices(IServiceCollection services)
2828
services.AddDbContext<TrackerContext>(options => options.UseSqlServer(connectionString));
2929

3030
// register AutoMapper profiles
31-
services.AddAutoMapper(typeof(TrackerContext));
31+
services.AddAutoMapper(cfg => { }, typeof(TrackerContext).Assembly);
3232

3333
// register validation
3434
services.Scan(x =>

src/EntityFrameworkCore.Generator.Core/ModelGenerator.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -512,9 +512,9 @@ private void GetModels(Entity? entity)
512512

513513
if (_options.Model.Read.Generate)
514514
CreateModel(entity, _options.Model.Read, ModelType.Read);
515-
if (_options.Model.Create.Generate)
515+
if (!entity.IsView && _options.Model.Create.Generate)
516516
CreateModel(entity, _options.Model.Create, ModelType.Create);
517-
if (_options.Model.Update.Generate)
517+
if (!entity.IsView && _options.Model.Update.Generate)
518518
CreateModel(entity, _options.Model.Update, ModelType.Update);
519519

520520
if (entity.Models.Count > 0)

test/EntityFrameworkCore.Generator.Core.Tests/EntityFrameworkCore.Generator.Core.Tests.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@
2424
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
2525
</PackageReference>
2626
<PackageReference Include="dbup-sqlserver" Version="6.0.0" />
27-
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="9.0.7" />
28-
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="9.0.7" />
27+
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="10.0.8" />
28+
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="10.0.8" />
2929
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.14.1" />
3030
<PackageReference Include="xunit" Version="2.9.3" />
3131
<PackageReference Include="xunit.runner.visualstudio" Version="3.1.3">

test/EntityFrameworkCore.Generator.Core.Tests/ModelGeneratorTests.cs

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System.Linq;
22

3+
using EntityFrameworkCore.Generator.Metadata.Generation;
34
using EntityFrameworkCore.Generator.Options;
45

56
using Microsoft.EntityFrameworkCore.Scaffolding.Metadata;
@@ -149,6 +150,57 @@ public void GenerateModelsCheckNames()
149150

150151
}
151152

153+
[Fact]
154+
public void GenerateViewModelsSkipsCreateAndUpdateModels()
155+
{
156+
var generatorOptions = new GeneratorOptions();
157+
generatorOptions.Model.Read.Generate = true;
158+
generatorOptions.Model.Create.Generate = true;
159+
generatorOptions.Model.Update.Generate = true;
160+
161+
var databaseModel = new DatabaseModel
162+
{
163+
DatabaseName = "TestDatabase",
164+
DefaultSchema = "dbo"
165+
};
166+
var testView = new DatabaseView
167+
{
168+
Database = databaseModel,
169+
Name = "TestView",
170+
Schema = "dbo"
171+
};
172+
databaseModel.Tables.Add(testView);
173+
174+
var identifierColumn = new DatabaseColumn
175+
{
176+
Table = testView,
177+
Name = "Id",
178+
IsNullable = false,
179+
StoreType = "int"
180+
};
181+
testView.Columns.Add(identifierColumn);
182+
183+
var nameColumn = new DatabaseColumn
184+
{
185+
Table = testView,
186+
Name = "Name",
187+
IsNullable = true,
188+
StoreType = "varchar(50)"
189+
};
190+
testView.Columns.Add(nameColumn);
191+
var generator = new ModelGenerator(NullLoggerFactory.Instance);
192+
193+
var typeMappingSource = CreateTypeMappingSource();
194+
195+
var result = generator.Generate(generatorOptions, databaseModel, typeMappingSource);
196+
Assert.Single(result.Entities);
197+
198+
var firstEntity = result.Entities[0];
199+
Assert.True(firstEntity.IsView);
200+
Assert.Single(firstEntity.Models);
201+
Assert.Equal(ModelType.Read, firstEntity.Models[0].ModelType);
202+
}
203+
152204
[Fact]
153205
public void GenerateWithSymbolInDatabaseName()
154206
{

0 commit comments

Comments
 (0)