sergey-kolodiy / Polygen
Licence: mit
PolyGen is a code generator that produces database schema, ORM layer, REST API and a (coming soon — stay tuned!) single-page web UI for your business model.
Stars: ✭ 19
Projects that are alternatives of or similar to Polygen
Devicemanager.api
Web API Framework demonstrates scalable, multitenant, architecture and allows building its own solution in the minutes. Uses: Entity Framework, UnitOfWork, Repository patterns. Wrapped in Docker, Kubernetes
Stars: ✭ 168 (+784.21%)
Mutual labels: database, dotnet-core
Bridge
♠️ C# to JavaScript compiler. Write modern mobile and web apps in C#. Run anywhere with Bridge.NET.
Stars: ✭ 2,216 (+11563.16%)
Mutual labels: roslyn, dotnet-core
Rocksdb Sharp
.net bindings for the rocksdb by facebook
Stars: ✭ 173 (+810.53%)
Mutual labels: database, dotnet-core
Efcore
EF Core is a modern object-database mapper for .NET. It supports LINQ queries, change tracking, updates, and schema migrations.
Stars: ✭ 10,838 (+56942.11%)
Mutual labels: database, dotnet-core
Gnorm
A database-first code generator for any language
Stars: ✭ 415 (+2084.21%)
Mutual labels: database, code-generation
Entityframeworkcore.cacheable
EntityFrameworkCore second level cache
Stars: ✭ 138 (+626.32%)
Mutual labels: database, dotnet-core
Entityframework Extensions
Entity Framework Bulk Operations | Improve Entity Framework performance with Bulk SaveChanges, Insert, update, delete and merge for SQL Server, SQL Azure, SQL Compact, MySQL and SQLite.
Stars: ✭ 215 (+1031.58%)
Mutual labels: database, dotnet-core
Json Flatfile Datastore
Simple JSON flat file data store with support for typed and dynamic data.
Stars: ✭ 212 (+1015.79%)
Mutual labels: database, dotnet-core
Awesome Roslyn
Curated list of awesome Roslyn books, tutorials, open-source projects, analyzers, code fixes, refactorings, and source generators
Stars: ✭ 395 (+1978.95%)
Mutual labels: roslyn, code-generation
Ceras
Universal binary serializer for a wide variety of scenarios https://discord.gg/FGaCX4c
Stars: ✭ 374 (+1868.42%)
Mutual labels: database, dotnet-core
Reinforced.tecture
Aspect-based architectural framework for .NET business applications involving some FP and CQRS principles.
Stars: ✭ 113 (+494.74%)
Mutual labels: database, dotnet-core
Entityframework Reverse Poco Code First Generator
EntityFramework Reverse POCO Code First Generator - Beautifully generated code that is fully customisable. This generator creates code as if you reverse engineered a database and lovingly created the code by hand. It is free to academics (you need a .edu or a .ac email address), not free for commercial use. Obtain your licence from
Stars: ✭ 562 (+2857.89%)
Mutual labels: database, code-generation
Dbx
A neat codegen-based database wrapper written in Go
Stars: ✭ 68 (+257.89%)
Mutual labels: database, code-generation
Pomelo.entityframeworkcore.mysql
Entity Framework Core provider for MySQL and MariaDB built on top of MySqlConnector
Stars: ✭ 2,099 (+10947.37%)
Mutual labels: database, dotnet-core
Realm Dotnet
Realm is a mobile database: a replacement for SQLite & ORMs
Stars: ✭ 927 (+4778.95%)
Mutual labels: database, dotnet-core
Rosalina
Rosalina is a code generation tool for Unity's UI documents. It generates C# code-behind script based on a UXML template.
Stars: ✭ 57 (+200%)
Mutual labels: roslyn, code-generation
Csharp Driver
DataStax C# Driver for Apache Cassandra
Stars: ✭ 477 (+2410.53%)
Mutual labels: database, dotnet-core
Mappinggenerator
🔄 "AutoMapper" like, Roslyn based, code fix provider that allows to generate mapping code in design time.
Stars: ✭ 831 (+4273.68%)
Mutual labels: roslyn, code-generation
Spotifyapi Net
🔉 A Client for the Spotify Web API, written in C#/.NET
Stars: ✭ 887 (+4568.42%)
Mutual labels: dotnet-core
Phpmyadmin sql backup
A Python script to automate SQL dumps via phpMyAdmin's web interface
Stars: ✭ 17 (-10.53%)
Mutual labels: database
PolyGen
PolyGen is a code generator that produces database schema, ORM layer, REST API and a (coming soon — stay tuned!) single-page web UI for your business model.
Getting Started
- Define your business model using Fluent Configuration API:
var model = ModelBuilder.Create()
.Entity("user", "Person")
.PrimaryKeyProperty("SSN").String().MaxLength(9)
.PrimaryKeyProperty("FirstName").String().MaxLength(100)
.PrimaryKeyProperty("LastName").String().MaxLength(100)
.Property("Nickname").String().MaxLength(100).Nullable()
.Property("BirthDate").Date()
.Property("Age").Int32().Computed()
.Property("RowVersion").RowVersion()
.Entity("blogging", "Blog")
.PrimaryKeyProperty("Id").Int32().Identity()
.Property("AuthorSSN").String().MaxLength(9)
.Property("AuthorFirstName").String().MaxLength(100)
.Property("AuthorLastName").String().MaxLength(100)
.Property("Title").String().MaxLength(200)
.Property("Description").String().MaxLength(500)
.Property("URL").String().MaxLength(1000)
.Property("Founded").Date()
.Entity("blogging", "Post")
.PrimaryKeyProperty("Id").Int32().Identity()
.Property("BlogId").Int32()
.Property("Title").String().MaxLength(200)
.Property("Summary").String().MaxLength(1000)
.Property("Content").String()
.Property("EditorSSN").String().MaxLength(9).Nullable()
.Property("EditorFirstName").String().MaxLength(100).Nullable()
.Property("EditorLastName").String().MaxLength(100).Nullable()
.Property("Rating").Byte()
.Entity("blogging", "Tag")
.PrimaryKeyProperty("Id").Int32().Identity()
.Property("Name").String().MaxLength(200)
.Property("Description").String().MaxLength(500)
.Entity("blogging", "PostTag")
.PrimaryKeyProperty("Id").Int32().Identity()
.Property("PostId").Int32()
.Property("TagId").Int32()
.Entity("blogging", "Comment")
.PrimaryKeyProperty("Id").Int32().Identity()
.Property("PostId").Int32()
.Property("AuthorSSN").String().MaxLength(9)
.Property("AuthorFirstName").String().MaxLength(100)
.Property("AuthorLastName").String().MaxLength(100)
.Property("Content").String()
.Property("DateTime").String()
.Relationship("FK_Author_Blogs")
.From("blogging", "Blog")
.To("user", "Person")
.Reference("AuthorSSN", "SSN")
.Reference("AuthorFirstName", "FirstName")
.Reference("AuthorLastName", "LastName")
.OnDeleteCascade()
.Relationship("FK_Blog_Posts")
.From("blogging", "Post")
.To("blogging", "Blog")
.Reference("BlogId", "Id")
.Relationship("FK_Post_Comments")
.From("blogging", "Comment")
.To("blogging", "Post")
.Reference("PostId", "Id")
.Relationship("FK_Comment_Author")
.From("blogging", "Comment")
.To("user", "Person")
.Reference("AuthorSSN", "SSN")
.Reference("AuthorFirstName", "FirstName")
.Reference("AuthorLastName", "LastName")
.Relationship("FK_Post_Editor")
.From("blogging", "Post")
.To("user", "Person")
.Reference("EditorSSN", "SSN")
.Reference("EditorFirstName", "FirstName")
.Reference("EditorLastName", "LastName")
.OnDeleteSetNull()
.Relationship("FK_Post_PostTags")
.From("blogging", "PostTag")
.To("blogging", "Post")
.Reference("PostId", "Id")
.Relationship("FK_Tag_PostTags")
.From("blogging", "PostTag")
.To("blogging", "Tag")
.Reference("TagId", "Id")
.Build();
- Generate code for the business model:
string code = model.GenerateCode();
- PolyGen will generate the following classes for you:
- ORM model (Entity Framerork Core is used), including
DbContext
; - ASP.NET Core
Startup
andProgram
classes; - Web API controller for each business model entity, including
Get
,GetById
,Post
,Put
andDelete
methods; - Validation models for
Post
andPut
controller methods (required to prevent under- and overposting);
For a business model defined in step 1, the following code will be generated:
namespace NoiseLab.PolyGen.Generated
{
using System.IO;
using System.Linq;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Filters;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
[Table("Person", Schema = "user")]
public class user_Person_OrmModel
{
[Column("SSN", Order = 0)]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[StringLength(9)]
[Required]
public System.String @SSN { get; set; }
[Column("FirstName", Order = 1)]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[StringLength(100)]
[Required]
public System.String @FirstName { get; set; }
[Column("LastName", Order = 2)]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[StringLength(100)]
[Required]
public System.String @LastName { get; set; }
[Column("Nickname", Order = 3)]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[StringLength(100)]
public System.String @Nickname { get; set; }
[Column("BirthDate", Order = 4)]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Required]
public System.DateTime @BirthDate { get; set; }
[Column("Age", Order = 5)]
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
[Required]
public System.Int32 @Age { get; set; }
[Column("RowVersion", Order = 6)]
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
[Required]
[Timestamp]
public System.Byte[] @RowVersion { get; set; }
public List<blogging_Blog_OrmModel> @blogging_Blog_FK_Author_Blogs { get; set; }
public List<blogging_Comment_OrmModel> @blogging_Comment_FK_Comment_Author { get; set; }
public List<blogging_Post_OrmModel> @blogging_Post_FK_Post_Editor { get; set; }
public void Update(user_Person_PutValidationModel model)
{
@Nickname = model.@Nickname;
@BirthDate = model.@BirthDate.Value;
@RowVersion = model.@RowVersion;
}
}
[Table("Blog", Schema = "blogging")]
public class blogging_Blog_OrmModel
{
[Column("Id", Order = 0)]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Required]
public System.Int32 @Id { get; set; }
[Column("AuthorSSN", Order = 1)]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[StringLength(9)]
[Required]
public System.String @AuthorSSN { get; set; }
[Column("AuthorFirstName", Order = 2)]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[StringLength(100)]
[Required]
public System.String @AuthorFirstName { get; set; }
[Column("AuthorLastName", Order = 3)]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[StringLength(100)]
[Required]
public System.String @AuthorLastName { get; set; }
[Column("Title", Order = 4)]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[StringLength(200)]
[Required]
public System.String @Title { get; set; }
[Column("Description", Order = 5)]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[StringLength(500)]
[Required]
public System.String @Description { get; set; }
[Column("URL", Order = 6)]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[StringLength(1000)]
[Required]
public System.String @URL { get; set; }
[Column("Founded", Order = 7)]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Required]
public System.DateTime @Founded { get; set; }
public user_Person_OrmModel @user_Person_FK_Author_Blogs { get; set; }
public List<blogging_Post_OrmModel> @blogging_Post_FK_Blog_Posts { get; set; }
public void Update(blogging_Blog_PutValidationModel model)
{
@AuthorSSN = model.@AuthorSSN;
@AuthorFirstName = model.@AuthorFirstName;
@AuthorLastName = model.@AuthorLastName;
@Title = model.@Title;
@Description = model.@Description;
@URL = model.@URL;
@Founded = model.@Founded.Value;
}
}
[Table("Post", Schema = "blogging")]
public class blogging_Post_OrmModel
{
[Column("Id", Order = 0)]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Required]
public System.Int32 @Id { get; set; }
[Column("BlogId", Order = 1)]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Required]
public System.Int32 @BlogId { get; set; }
[Column("Title", Order = 2)]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[StringLength(200)]
[Required]
public System.String @Title { get; set; }
[Column("Summary", Order = 3)]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[StringLength(1000)]
[Required]
public System.String @Summary { get; set; }
[Column("Content", Order = 4)]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Required]
public System.String @Content { get; set; }
[Column("EditorSSN", Order = 5)]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[StringLength(9)]
public System.String @EditorSSN { get; set; }
[Column("EditorFirstName", Order = 6)]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[StringLength(100)]
public System.String @EditorFirstName { get; set; }
[Column("EditorLastName", Order = 7)]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[StringLength(100)]
public System.String @EditorLastName { get; set; }
[Column("Rating", Order = 8)]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Required]
public System.Byte @Rating { get; set; }
public blogging_Blog_OrmModel @blogging_Blog_FK_Blog_Posts { get; set; }
public user_Person_OrmModel @user_Person_FK_Post_Editor { get; set; }
public List<blogging_Comment_OrmModel> @blogging_Comment_FK_Post_Comments { get; set; }
public List<blogging_PostTag_OrmModel> @blogging_PostTag_FK_Post_PostTags { get; set; }
public void Update(blogging_Post_PutValidationModel model)
{
@BlogId = model.@BlogId.Value;
@Title = model.@Title;
@Summary = model.@Summary;
@Content = model.@Content;
@EditorSSN = model.@EditorSSN;
@EditorFirstName = model.@EditorFirstName;
@EditorLastName = model.@EditorLastName;
@Rating = model.@Rating.Value;
}
}
[Table("Tag", Schema = "blogging")]
public class blogging_Tag_OrmModel
{
[Column("Id", Order = 0)]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Required]
public System.Int32 @Id { get; set; }
[Column("Name", Order = 1)]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[StringLength(200)]
[Required]
public System.String @Name { get; set; }
[Column("Description", Order = 2)]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[StringLength(500)]
[Required]
public System.String @Description { get; set; }
public List<blogging_PostTag_OrmModel> @blogging_PostTag_FK_Tag_PostTags { get; set; }
public void Update(blogging_Tag_PutValidationModel model)
{
@Name = model.@Name;
@Description = model.@Description;
}
}
[Table("PostTag", Schema = "blogging")]
public class blogging_PostTag_OrmModel
{
[Column("Id", Order = 0)]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Required]
public System.Int32 @Id { get; set; }
[Column("PostId", Order = 1)]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Required]
public System.Int32 @PostId { get; set; }
[Column("TagId", Order = 2)]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Required]
public System.Int32 @TagId { get; set; }
public blogging_Post_OrmModel @blogging_Post_FK_Post_PostTags { get; set; }
public blogging_Tag_OrmModel @blogging_Tag_FK_Tag_PostTags { get; set; }
public void Update(blogging_PostTag_PutValidationModel model)
{
@PostId = model.@PostId.Value;
@TagId = model.@TagId.Value;
}
}
[Table("Comment", Schema = "blogging")]
public class blogging_Comment_OrmModel
{
[Column("Id", Order = 0)]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Required]
public System.Int32 @Id { get; set; }
[Column("PostId", Order = 1)]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Required]
public System.Int32 @PostId { get; set; }
[Column("AuthorSSN", Order = 2)]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[StringLength(9)]
[Required]
public System.String @AuthorSSN { get; set; }
[Column("AuthorFirstName", Order = 3)]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[StringLength(100)]
[Required]
public System.String @AuthorFirstName { get; set; }
[Column("AuthorLastName", Order = 4)]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[StringLength(100)]
[Required]
public System.String @AuthorLastName { get; set; }
[Column("Content", Order = 5)]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Required]
public System.String @Content { get; set; }
[Column("DateTime", Order = 6)]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Required]
public System.String @DateTime { get; set; }
public blogging_Post_OrmModel @blogging_Post_FK_Post_Comments { get; set; }
public user_Person_OrmModel @user_Person_FK_Comment_Author { get; set; }
public void Update(blogging_Comment_PutValidationModel model)
{
@PostId = model.@PostId.Value;
@AuthorSSN = model.@AuthorSSN;
@AuthorFirstName = model.@AuthorFirstName;
@AuthorLastName = model.@AuthorLastName;
@Content = model.@Content;
@DateTime = model.@DateTime;
}
}
public class user_Person_PostValidationModel
{
[Required]
[MaxLength(9)]
public System.String @SSN { get; set; }
[Required]
[MaxLength(100)]
public System.String @FirstName { get; set; }
[Required]
[MaxLength(100)]
public System.String @LastName { get; set; }
[MaxLength(100)]
public System.String @Nickname { get; set; }
[Required]
public System.Nullable<System.DateTime> @BirthDate { get; set; }
public user_Person_OrmModel ToOrmModel()
{
var ormModel = new user_Person_OrmModel();
ormModel.@SSN = @SSN;
ormModel.@FirstName = @FirstName;
ormModel.@LastName = @LastName;
ormModel.@Nickname = @Nickname;
ormModel.@BirthDate = @BirthDate.Value;
return ormModel;
}
}
public class blogging_Blog_PostValidationModel
{
[Required]
[MaxLength(9)]
public System.String @AuthorSSN { get; set; }
[Required]
[MaxLength(100)]
public System.String @AuthorFirstName { get; set; }
[Required]
[MaxLength(100)]
public System.String @AuthorLastName { get; set; }
[Required]
[MaxLength(200)]
public System.String @Title { get; set; }
[Required]
[MaxLength(500)]
public System.String @Description { get; set; }
[Required]
[MaxLength(1000)]
public System.String @URL { get; set; }
[Required]
public System.Nullable<System.DateTime> @Founded { get; set; }
public blogging_Blog_OrmModel ToOrmModel()
{
var ormModel = new blogging_Blog_OrmModel();
ormModel.@AuthorSSN = @AuthorSSN;
ormModel.@AuthorFirstName = @AuthorFirstName;
ormModel.@AuthorLastName = @AuthorLastName;
ormModel.@Title = @Title;
ormModel.@Description = @Description;
ormModel.@URL = @URL;
ormModel.@Founded = @Founded.Value;
return ormModel;
}
}
public class blogging_Post_PostValidationModel
{
[Required]
public System.Nullable<System.Int32> @BlogId { get; set; }
[Required]
[MaxLength(200)]
public System.String @Title { get; set; }
[Required]
[MaxLength(1000)]
public System.String @Summary { get; set; }
[Required]
public System.String @Content { get; set; }
[MaxLength(9)]
public System.String @EditorSSN { get; set; }
[MaxLength(100)]
public System.String @EditorFirstName { get; set; }
[MaxLength(100)]
public System.String @EditorLastName { get; set; }
[Required]
public System.Nullable<System.Byte> @Rating { get; set; }
public blogging_Post_OrmModel ToOrmModel()
{
var ormModel = new blogging_Post_OrmModel();
ormModel.@BlogId = @BlogId.Value;
ormModel.@Title = @Title;
ormModel.@Summary = @Summary;
ormModel.@Content = @Content;
ormModel.@EditorSSN = @EditorSSN;
ormModel.@EditorFirstName = @EditorFirstName;
ormModel.@EditorLastName = @EditorLastName;
ormModel.@Rating = @Rating.Value;
return ormModel;
}
}
public class blogging_Tag_PostValidationModel
{
[Required]
[MaxLength(200)]
public System.String @Name { get; set; }
[Required]
[MaxLength(500)]
public System.String @Description { get; set; }
public blogging_Tag_OrmModel ToOrmModel()
{
var ormModel = new blogging_Tag_OrmModel();
ormModel.@Name = @Name;
ormModel.@Description = @Description;
return ormModel;
}
}
public class blogging_PostTag_PostValidationModel
{
[Required]
public System.Nullable<System.Int32> @PostId { get; set; }
[Required]
public System.Nullable<System.Int32> @TagId { get; set; }
public blogging_PostTag_OrmModel ToOrmModel()
{
var ormModel = new blogging_PostTag_OrmModel();
ormModel.@PostId = @PostId.Value;
ormModel.@TagId = @TagId.Value;
return ormModel;
}
}
public class blogging_Comment_PostValidationModel
{
[Required]
public System.Nullable<System.Int32> @PostId { get; set; }
[Required]
[MaxLength(9)]
public System.String @AuthorSSN { get; set; }
[Required]
[MaxLength(100)]
public System.String @AuthorFirstName { get; set; }
[Required]
[MaxLength(100)]
public System.String @AuthorLastName { get; set; }
[Required]
public System.String @Content { get; set; }
[Required]
public System.String @DateTime { get; set; }
public blogging_Comment_OrmModel ToOrmModel()
{
var ormModel = new blogging_Comment_OrmModel();
ormModel.@PostId = @PostId.Value;
ormModel.@AuthorSSN = @AuthorSSN;
ormModel.@AuthorFirstName = @AuthorFirstName;
ormModel.@AuthorLastName = @AuthorLastName;
ormModel.@Content = @Content;
ormModel.@DateTime = @DateTime;
return ormModel;
}
}
public class user_Person_PutValidationModel
{
[Required]
[MaxLength(9)]
public System.String @SSN { get; set; }
[Required]
[MaxLength(100)]
public System.String @FirstName { get; set; }
[Required]
[MaxLength(100)]
public System.String @LastName { get; set; }
[MaxLength(100)]
public System.String @Nickname { get; set; }
[Required]
public System.Nullable<System.DateTime> @BirthDate { get; set; }
[Required]
public System.Byte[] @RowVersion { get; set; }
public user_Person_OrmModel ToOrmModel()
{
var ormModel = new user_Person_OrmModel();
ormModel.@SSN = @SSN;
ormModel.@FirstName = @FirstName;
ormModel.@LastName = @LastName;
ormModel.@Nickname = @Nickname;
ormModel.@BirthDate = @BirthDate.Value;
ormModel.@RowVersion = @RowVersion;
return ormModel;
}
}
public class blogging_Blog_PutValidationModel
{
[Required]
public System.Nullable<System.Int32> @Id { get; set; }
[Required]
[MaxLength(9)]
public System.String @AuthorSSN { get; set; }
[Required]
[MaxLength(100)]
public System.String @AuthorFirstName { get; set; }
[Required]
[MaxLength(100)]
public System.String @AuthorLastName { get; set; }
[Required]
[MaxLength(200)]
public System.String @Title { get; set; }
[Required]
[MaxLength(500)]
public System.String @Description { get; set; }
[Required]
[MaxLength(1000)]
public System.String @URL { get; set; }
[Required]
public System.Nullable<System.DateTime> @Founded { get; set; }
public blogging_Blog_OrmModel ToOrmModel()
{
var ormModel = new blogging_Blog_OrmModel();
ormModel.@Id = @Id.Value;
ormModel.@AuthorSSN = @AuthorSSN;
ormModel.@AuthorFirstName = @AuthorFirstName;
ormModel.@AuthorLastName = @AuthorLastName;
ormModel.@Title = @Title;
ormModel.@Description = @Description;
ormModel.@URL = @URL;
ormModel.@Founded = @Founded.Value;
return ormModel;
}
}
public class blogging_Post_PutValidationModel
{
[Required]
public System.Nullable<System.Int32> @Id { get; set; }
[Required]
public System.Nullable<System.Int32> @BlogId { get; set; }
[Required]
[MaxLength(200)]
public System.String @Title { get; set; }
[Required]
[MaxLength(1000)]
public System.String @Summary { get; set; }
[Required]
public System.String @Content { get; set; }
[MaxLength(9)]
public System.String @EditorSSN { get; set; }
[MaxLength(100)]
public System.String @EditorFirstName { get; set; }
[MaxLength(100)]
public System.String @EditorLastName { get; set; }
[Required]
public System.Nullable<System.Byte> @Rating { get; set; }
public blogging_Post_OrmModel ToOrmModel()
{
var ormModel = new blogging_Post_OrmModel();
ormModel.@Id = @Id.Value;
ormModel.@BlogId = @BlogId.Value;
ormModel.@Title = @Title;
ormModel.@Summary = @Summary;
ormModel.@Content = @Content;
ormModel.@EditorSSN = @EditorSSN;
ormModel.@EditorFirstName = @EditorFirstName;
ormModel.@EditorLastName = @EditorLastName;
ormModel.@Rating = @Rating.Value;
return ormModel;
}
}
public class blogging_Tag_PutValidationModel
{
[Required]
public System.Nullable<System.Int32> @Id { get; set; }
[Required]
[MaxLength(200)]
public System.String @Name { get; set; }
[Required]
[MaxLength(500)]
public System.String @Description { get; set; }
public blogging_Tag_OrmModel ToOrmModel()
{
var ormModel = new blogging_Tag_OrmModel();
ormModel.@Id = @Id.Value;
ormModel.@Name = @Name;
ormModel.@Description = @Description;
return ormModel;
}
}
public class blogging_PostTag_PutValidationModel
{
[Required]
public System.Nullable<System.Int32> @Id { get; set; }
[Required]
public System.Nullable<System.Int32> @PostId { get; set; }
[Required]
public System.Nullable<System.Int32> @TagId { get; set; }
public blogging_PostTag_OrmModel ToOrmModel()
{
var ormModel = new blogging_PostTag_OrmModel();
ormModel.@Id = @Id.Value;
ormModel.@PostId = @PostId.Value;
ormModel.@TagId = @TagId.Value;
return ormModel;
}
}
public class blogging_Comment_PutValidationModel
{
[Required]
public System.Nullable<System.Int32> @Id { get; set; }
[Required]
public System.Nullable<System.Int32> @PostId { get; set; }
[Required]
[MaxLength(9)]
public System.String @AuthorSSN { get; set; }
[Required]
[MaxLength(100)]
public System.String @AuthorFirstName { get; set; }
[Required]
[MaxLength(100)]
public System.String @AuthorLastName { get; set; }
[Required]
public System.String @Content { get; set; }
[Required]
public System.String @DateTime { get; set; }
public blogging_Comment_OrmModel ToOrmModel()
{
var ormModel = new blogging_Comment_OrmModel();
ormModel.@Id = @Id.Value;
ormModel.@PostId = @PostId.Value;
ormModel.@AuthorSSN = @AuthorSSN;
ormModel.@AuthorFirstName = @AuthorFirstName;
ormModel.@AuthorLastName = @AuthorLastName;
ormModel.@Content = @Content;
ormModel.@DateTime = @DateTime;
return ormModel;
}
}
public class DatabaseContext : DbContext
{
public DbSet<user_Person_OrmModel> user_Person_DBSet { get; set; }
public DbSet<blogging_Blog_OrmModel> blogging_Blog_DBSet { get; set; }
public DbSet<blogging_Post_OrmModel> blogging_Post_DBSet { get; set; }
public DbSet<blogging_Tag_OrmModel> blogging_Tag_DBSet { get; set; }
public DbSet<blogging_PostTag_OrmModel> blogging_PostTag_DBSet { get; set; }
public DbSet<blogging_Comment_OrmModel> blogging_Comment_DBSet { get; set; }
public DatabaseContext(DbContextOptions options) : base(options)
{
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
{
modelBuilder.Entity<user_Person_OrmModel>().HasKey(o => new {o.@SSN, o.@FirstName, o.@LastName});
modelBuilder.Entity<user_Person_OrmModel>().HasMany(o => o.@blogging_Blog_FK_Author_Blogs)
.WithOne(o => o.@user_Person_FK_Author_Blogs)
.HasForeignKey("AuthorSSN", "AuthorFirstName", "AuthorLastName").OnDelete(DeleteBehavior.Cascade)
.HasConstraintName("FK_Author_Blogs");
modelBuilder.Entity<user_Person_OrmModel>().HasMany(o => o.@blogging_Comment_FK_Comment_Author)
.WithOne(o => o.@user_Person_FK_Comment_Author)
.HasForeignKey("AuthorSSN", "AuthorFirstName", "AuthorLastName").OnDelete(DeleteBehavior.Restrict)
.HasConstraintName("FK_Comment_Author");
modelBuilder.Entity<user_Person_OrmModel>().HasMany(o => o.@blogging_Post_FK_Post_Editor)
.WithOne(o => o.@user_Person_FK_Post_Editor)
.HasForeignKey("EditorSSN", "EditorFirstName", "EditorLastName").OnDelete(DeleteBehavior.SetNull)
.HasConstraintName("FK_Post_Editor");
modelBuilder.Entity<blogging_Blog_OrmModel>().HasKey(o => new {o.@Id});
modelBuilder.Entity<blogging_Blog_OrmModel>().HasMany(o => o.@blogging_Post_FK_Blog_Posts)
.WithOne(o => o.@blogging_Blog_FK_Blog_Posts).HasForeignKey("BlogId")
.OnDelete(DeleteBehavior.Restrict).HasConstraintName("FK_Blog_Posts");
modelBuilder.Entity<blogging_Post_OrmModel>().HasKey(o => new {o.@Id});
modelBuilder.Entity<blogging_Post_OrmModel>().HasMany(o => o.@blogging_Comment_FK_Post_Comments)
.WithOne(o => o.@blogging_Post_FK_Post_Comments).HasForeignKey("PostId")
.OnDelete(DeleteBehavior.Restrict).HasConstraintName("FK_Post_Comments");
modelBuilder.Entity<blogging_Post_OrmModel>().HasMany(o => o.@blogging_PostTag_FK_Post_PostTags)
.WithOne(o => o.@blogging_Post_FK_Post_PostTags).HasForeignKey("PostId")
.OnDelete(DeleteBehavior.Restrict).HasConstraintName("FK_Post_PostTags");
modelBuilder.Entity<blogging_Tag_OrmModel>().HasKey(o => new {o.@Id});
modelBuilder.Entity<blogging_Tag_OrmModel>().HasMany(o => o.@blogging_PostTag_FK_Tag_PostTags)
.WithOne(o => o.@blogging_Tag_FK_Tag_PostTags).HasForeignKey("TagId")
.OnDelete(DeleteBehavior.Restrict).HasConstraintName("FK_Tag_PostTags");
modelBuilder.Entity<blogging_PostTag_OrmModel>().HasKey(o => new {o.@Id});
modelBuilder.Entity<blogging_Comment_OrmModel>().HasKey(o => new {o.@Id});
}
}
}
public class Startup
{
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder().SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", false, true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", true).AddEnvironmentVariables();
_configuration = builder.Build();
}
private readonly IConfigurationRoot _configuration;
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<DatabaseContext>(
options => options.UseSqlServer(_configuration.GetValue<string>("ConnectionString")));
services.AddMvc(options =>
{
options.Filters.Add(typeof(ModelStateValidationAttribute));
options.Filters.Add(typeof(NullValidationAttribute));
});
}
public void Configure(DatabaseContext context, IApplicationBuilder app)
{
context.Database.EnsureCreated();
app.UseMvc();
}
}
public static class Program
{
public static void Main()
{
var host = new WebHostBuilder().UseKestrel().UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration().UseStartup<Startup>().Build();
host.Run();
}
}
[Route("api/user_Person")]
public class user_Person_Controller : Controller
{
private readonly DatabaseContext _context;
public user_Person_Controller(DatabaseContext context)
{
_context = context;
}
[HttpGet]
public async Task<IEnumerable<user_Person_OrmModel>> Get()
{
await _context.user_Person_DBSet.LoadAsync();
return _context.user_Person_DBSet;
}
[HttpGet("{SSN}/{FirstName}/{LastName}")]
public async Task<IActionResult> GetById(System.String @SSN, System.String @FirstName, System.String @LastName)
{
var entity = await _context.user_Person_DBSet.FindAsync(@SSN, @FirstName, @LastName);
return entity == null ? (IActionResult) NotFound() : Ok(entity);
}
[HttpPost]
public async Task<IActionResult> Post([FromBody] user_Person_PostValidationModel entity)
{
var ormModel = entity.ToOrmModel();
_context.user_Person_DBSet.Add(ormModel);
await _context.SaveChangesAsync();
return Created($"api/user_Person/{ormModel.@SSN}/{ormModel.@FirstName}/{ormModel.@LastName}", ormModel);
}
[HttpPut("{SSN}/{FirstName}/{LastName}")]
public async Task<IActionResult> Put(System.String @SSN, System.String @FirstName, System.String @LastName,
[FromBody] user_Person_PutValidationModel entity)
{
if (!(@SSN == entity.@SSN && @FirstName == entity.@FirstName && @LastName == entity.@LastName))
{
return BadRequest(new {error = "Entity identifier does not match route identifier."});
}
var existing = await _context.user_Person_DBSet.FindAsync(@SSN, @FirstName, @LastName);
if (existing == null)
{
return NotFound();
}
_context.Entry(existing).State = EntityState.Detached;
var ormModel = entity.ToOrmModel();
_context.user_Person_DBSet.Attach(ormModel);
_context.Entry(ormModel).State = EntityState.Modified;
try
{
await _context.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException ex)
{
var exceptionEntry = ex.Entries.Single();
var clientObject = (user_Person_OrmModel) exceptionEntry.Entity;
var databaseValues = exceptionEntry.GetDatabaseValues();
if (databaseValues == null)
{
ModelState.AddModelError(string.Empty, "Unable to save changes. The specified entity was deleted.");
}
else
{
var databaseObject = (user_Person_OrmModel) databaseValues.ToObject();
if (databaseObject.@Nickname != clientObject.@Nickname)
{
ModelState.AddModelError("Nickname", $"Current value: {databaseObject.Nickname}");
}
if (databaseObject.@BirthDate != clientObject.@BirthDate)
{
ModelState.AddModelError("BirthDate", $"Current value: {databaseObject.BirthDate}");
}
}
return BadRequest(ModelState);
}
return Ok();
}
[HttpDelete("{SSN}/{FirstName}/{LastName}")]
public async Task<IActionResult> Delete(System.String @SSN, System.String @FirstName, System.String @LastName)
{
var entity = await _context.user_Person_DBSet.FindAsync(@SSN, @FirstName, @LastName);
if (entity == null)
{
return NotFound();
}
_context.Remove(entity);
await _context.SaveChangesAsync();
return Ok();
}
}
[Route("api/blogging_Blog")]
public class blogging_Blog_Controller : Controller
{
private readonly DatabaseContext _context;
public blogging_Blog_Controller(DatabaseContext context)
{
_context = context;
}
[HttpGet]
public async Task<IEnumerable<blogging_Blog_OrmModel>> Get()
{
await _context.blogging_Blog_DBSet.LoadAsync();
return _context.blogging_Blog_DBSet;
}
[HttpGet("{Id}")]
public async Task<IActionResult> GetById(System.Int32 @Id)
{
var entity = await _context.blogging_Blog_DBSet.FindAsync(@Id);
return entity == null ? (IActionResult) NotFound() : Ok(entity);
}
[HttpPost]
public async Task<IActionResult> Post([FromBody] blogging_Blog_PostValidationModel entity)
{
var ormModel = entity.ToOrmModel();
_context.blogging_Blog_DBSet.Add(ormModel);
await _context.SaveChangesAsync();
return Created($"api/blogging_Blog/{ormModel.@Id}", ormModel);
}
[HttpPut("{Id}")]
public async Task<IActionResult> Put(System.Int32 @Id, [FromBody] blogging_Blog_PutValidationModel entity)
{
if (!(@Id == entity.@Id))
{
return BadRequest(new {error = "Entity identifier does not match route identifier."});
}
var existing = await _context.blogging_Blog_DBSet.FindAsync(@Id);
if (existing == null)
{
return NotFound();
}
_context.Entry(existing).State = EntityState.Detached;
var ormModel = entity.ToOrmModel();
_context.blogging_Blog_DBSet.Attach(ormModel);
_context.Entry(ormModel).State = EntityState.Modified;
try
{
await _context.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException ex)
{
var exceptionEntry = ex.Entries.Single();
var clientObject = (blogging_Blog_OrmModel) exceptionEntry.Entity;
var databaseValues = exceptionEntry.GetDatabaseValues();
if (databaseValues == null)
{
ModelState.AddModelError(string.Empty, "Unable to save changes. The specified entity was deleted.");
}
else
{
var databaseObject = (blogging_Blog_OrmModel) databaseValues.ToObject();
if (databaseObject.@AuthorSSN != clientObject.@AuthorSSN)
{
ModelState.AddModelError("AuthorSSN", $"Current value: {databaseObject.AuthorSSN}");
}
if (databaseObject.@AuthorFirstName != clientObject.@AuthorFirstName)
{
ModelState.AddModelError("AuthorFirstName", $"Current value: {databaseObject.AuthorFirstName}");
}
if (databaseObject.@AuthorLastName != clientObject.@AuthorLastName)
{
ModelState.AddModelError("AuthorLastName", $"Current value: {databaseObject.AuthorLastName}");
}
if (databaseObject.@Title != clientObject.@Title)
{
ModelState.AddModelError("Title", $"Current value: {databaseObject.Title}");
}
if (databaseObject.@Description != clientObject.@Description)
{
ModelState.AddModelError("Description", $"Current value: {databaseObject.Description}");
}
if (databaseObject.@URL != clientObject.@URL)
{
ModelState.AddModelError("URL", $"Current value: {databaseObject.URL}");
}
if (databaseObject.@Founded != clientObject.@Founded)
{
ModelState.AddModelError("Founded", $"Current value: {databaseObject.Founded}");
}
}
return BadRequest(ModelState);
}
return Ok();
}
[HttpDelete("{Id}")]
public async Task<IActionResult> Delete(System.Int32 @Id)
{
var entity = await _context.blogging_Blog_DBSet.FindAsync(@Id);
if (entity == null)
{
return NotFound();
}
_context.Remove(entity);
await _context.SaveChangesAsync();
return Ok();
}
}
[Route("api/blogging_Post")]
public class blogging_Post_Controller : Controller
{
private readonly DatabaseContext _context;
public blogging_Post_Controller(DatabaseContext context)
{
_context = context;
}
[HttpGet]
public async Task<IEnumerable<blogging_Post_OrmModel>> Get()
{
await _context.blogging_Post_DBSet.LoadAsync();
return _context.blogging_Post_DBSet;
}
[HttpGet("{Id}")]
public async Task<IActionResult> GetById(System.Int32 @Id)
{
var entity = await _context.blogging_Post_DBSet.FindAsync(@Id);
return entity == null ? (IActionResult) NotFound() : Ok(entity);
}
[HttpPost]
public async Task<IActionResult> Post([FromBody] blogging_Post_PostValidationModel entity)
{
var ormModel = entity.ToOrmModel();
_context.blogging_Post_DBSet.Add(ormModel);
await _context.SaveChangesAsync();
return Created($"api/blogging_Post/{ormModel.@Id}", ormModel);
}
[HttpPut("{Id}")]
public async Task<IActionResult> Put(System.Int32 @Id, [FromBody] blogging_Post_PutValidationModel entity)
{
if (!(@Id == entity.@Id))
{
return BadRequest(new {error = "Entity identifier does not match route identifier."});
}
var existing = await _context.blogging_Post_DBSet.FindAsync(@Id);
if (existing == null)
{
return NotFound();
}
_context.Entry(existing).State = EntityState.Detached;
var ormModel = entity.ToOrmModel();
_context.blogging_Post_DBSet.Attach(ormModel);
_context.Entry(ormModel).State = EntityState.Modified;
try
{
await _context.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException ex)
{
var exceptionEntry = ex.Entries.Single();
var clientObject = (blogging_Post_OrmModel) exceptionEntry.Entity;
var databaseValues = exceptionEntry.GetDatabaseValues();
if (databaseValues == null)
{
ModelState.AddModelError(string.Empty, "Unable to save changes. The specified entity was deleted.");
}
else
{
var databaseObject = (blogging_Post_OrmModel) databaseValues.ToObject();
if (databaseObject.@BlogId != clientObject.@BlogId)
{
ModelState.AddModelError("BlogId", $"Current value: {databaseObject.BlogId}");
}
if (databaseObject.@Title != clientObject.@Title)
{
ModelState.AddModelError("Title", $"Current value: {databaseObject.Title}");
}
if (databaseObject.@Summary != clientObject.@Summary)
{
ModelState.AddModelError("Summary", $"Current value: {databaseObject.Summary}");
}
if (databaseObject.@Content != clientObject.@Content)
{
ModelState.AddModelError("Content", $"Current value: {databaseObject.Content}");
}
if (databaseObject.@EditorSSN != clientObject.@EditorSSN)
{
ModelState.AddModelError("EditorSSN", $"Current value: {databaseObject.EditorSSN}");
}
if (databaseObject.@EditorFirstName != clientObject.@EditorFirstName)
{
ModelState.AddModelError("EditorFirstName", $"Current value: {databaseObject.EditorFirstName}");
}
if (databaseObject.@EditorLastName != clientObject.@EditorLastName)
{
ModelState.AddModelError("EditorLastName", $"Current value: {databaseObject.EditorLastName}");
}
if (databaseObject.@Rating != clientObject.@Rating)
{
ModelState.AddModelError("Rating", $"Current value: {databaseObject.Rating}");
}
}
return BadRequest(ModelState);
}
return Ok();
}
[HttpDelete("{Id}")]
public async Task<IActionResult> Delete(System.Int32 @Id)
{
var entity = await _context.blogging_Post_DBSet.FindAsync(@Id);
if (entity == null)
{
return NotFound();
}
_context.Remove(entity);
await _context.SaveChangesAsync();
return Ok();
}
}
[Route("api/blogging_Tag")]
public class blogging_Tag_Controller : Controller
{
private readonly DatabaseContext _context;
public blogging_Tag_Controller(DatabaseContext context)
{
_context = context;
}
[HttpGet]
public async Task<IEnumerable<blogging_Tag_OrmModel>> Get()
{
await _context.blogging_Tag_DBSet.LoadAsync();
return _context.blogging_Tag_DBSet;
}
[HttpGet("{Id}")]
public async Task<IActionResult> GetById(System.Int32 @Id)
{
var entity = await _context.blogging_Tag_DBSet.FindAsync(@Id);
return entity == null ? (IActionResult) NotFound() : Ok(entity);
}
[HttpPost]
public async Task<IActionResult> Post([FromBody] blogging_Tag_PostValidationModel entity)
{
var ormModel = entity.ToOrmModel();
_context.blogging_Tag_DBSet.Add(ormModel);
await _context.SaveChangesAsync();
return Created($"api/blogging_Tag/{ormModel.@Id}", ormModel);
}
[HttpPut("{Id}")]
public async Task<IActionResult> Put(System.Int32 @Id, [FromBody] blogging_Tag_PutValidationModel entity)
{
if (!(@Id == entity.@Id))
{
return BadRequest(new {error = "Entity identifier does not match route identifier."});
}
var existing = await _context.blogging_Tag_DBSet.FindAsync(@Id);
if (existing == null)
{
return NotFound();
}
_context.Entry(existing).State = EntityState.Detached;
var ormModel = entity.ToOrmModel();
_context.blogging_Tag_DBSet.Attach(ormModel);
_context.Entry(ormModel).State = EntityState.Modified;
try
{
await _context.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException ex)
{
var exceptionEntry = ex.Entries.Single();
var clientObject = (blogging_Tag_OrmModel) exceptionEntry.Entity;
var databaseValues = exceptionEntry.GetDatabaseValues();
if (databaseValues == null)
{
ModelState.AddModelError(string.Empty, "Unable to save changes. The specified entity was deleted.");
}
else
{
var databaseObject = (blogging_Tag_OrmModel) databaseValues.ToObject();
if (databaseObject.@Name != clientObject.@Name)
{
ModelState.AddModelError("Name", $"Current value: {databaseObject.Name}");
}
if (databaseObject.@Description != clientObject.@Description)
{
ModelState.AddModelError("Description", $"Current value: {databaseObject.Description}");
}
}
return BadRequest(ModelState);
}
return Ok();
}
[HttpDelete("{Id}")]
public async Task<IActionResult> Delete(System.Int32 @Id)
{
var entity = await _context.blogging_Tag_DBSet.FindAsync(@Id);
if (entity == null)
{
return NotFound();
}
_context.Remove(entity);
await _context.SaveChangesAsync();
return Ok();
}
}
[Route("api/blogging_PostTag")]
public class blogging_PostTag_Controller : Controller
{
private readonly DatabaseContext _context;
public blogging_PostTag_Controller(DatabaseContext context)
{
_context = context;
}
[HttpGet]
public async Task<IEnumerable<blogging_PostTag_OrmModel>> Get()
{
await _context.blogging_PostTag_DBSet.LoadAsync();
return _context.blogging_PostTag_DBSet;
}
[HttpGet("{Id}")]
public async Task<IActionResult> GetById(System.Int32 @Id)
{
var entity = await _context.blogging_PostTag_DBSet.FindAsync(@Id);
return entity == null ? (IActionResult) NotFound() : Ok(entity);
}
[HttpPost]
public async Task<IActionResult> Post([FromBody] blogging_PostTag_PostValidationModel entity)
{
var ormModel = entity.ToOrmModel();
_context.blogging_PostTag_DBSet.Add(ormModel);
await _context.SaveChangesAsync();
return Created($"api/blogging_PostTag/{ormModel.@Id}", ormModel);
}
[HttpPut("{Id}")]
public async Task<IActionResult> Put(System.Int32 @Id, [FromBody] blogging_PostTag_PutValidationModel entity)
{
if (!(@Id == entity.@Id))
{
return BadRequest(new {error = "Entity identifier does not match route identifier."});
}
var existing = await _context.blogging_PostTag_DBSet.FindAsync(@Id);
if (existing == null)
{
return NotFound();
}
_context.Entry(existing).State = EntityState.Detached;
var ormModel = entity.ToOrmModel();
_context.blogging_PostTag_DBSet.Attach(ormModel);
_context.Entry(ormModel).State = EntityState.Modified;
try
{
await _context.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException ex)
{
var exceptionEntry = ex.Entries.Single();
var clientObject = (blogging_PostTag_OrmModel) exceptionEntry.Entity;
var databaseValues = exceptionEntry.GetDatabaseValues();
if (databaseValues == null)
{
ModelState.AddModelError(string.Empty, "Unable to save changes. The specified entity was deleted.");
}
else
{
var databaseObject = (blogging_PostTag_OrmModel) databaseValues.ToObject();
if (databaseObject.@PostId != clientObject.@PostId)
{
ModelState.AddModelError("PostId", $"Current value: {databaseObject.PostId}");
}
if (databaseObject.@TagId != clientObject.@TagId)
{
ModelState.AddModelError("TagId", $"Current value: {databaseObject.TagId}");
}
}
return BadRequest(ModelState);
}
return Ok();
}
[HttpDelete("{Id}")]
public async Task<IActionResult> Delete(System.Int32 @Id)
{
var entity = await _context.blogging_PostTag_DBSet.FindAsync(@Id);
if (entity == null)
{
return NotFound();
}
_context.Remove(entity);
await _context.SaveChangesAsync();
return Ok();
}
}
[Route("api/blogging_Comment")]
public class blogging_Comment_Controller : Controller
{
private readonly DatabaseContext _context;
public blogging_Comment_Controller(DatabaseContext context)
{
_context = context;
}
[HttpGet]
public async Task<IEnumerable<blogging_Comment_OrmModel>> Get()
{
await _context.blogging_Comment_DBSet.LoadAsync();
return _context.blogging_Comment_DBSet;
}
[HttpGet("{Id}")]
public async Task<IActionResult> GetById(System.Int32 @Id)
{
var entity = await _context.blogging_Comment_DBSet.FindAsync(@Id);
return entity == null ? (IActionResult) NotFound() : Ok(entity);
}
[HttpPost]
public async Task<IActionResult> Post([FromBody] blogging_Comment_PostValidationModel entity)
{
var ormModel = entity.ToOrmModel();
_context.blogging_Comment_DBSet.Add(ormModel);
await _context.SaveChangesAsync();
return Created($"api/blogging_Comment/{ormModel.@Id}", ormModel);
}
[HttpPut("{Id}")]
public async Task<IActionResult> Put(System.Int32 @Id, [FromBody] blogging_Comment_PutValidationModel entity)
{
if (!(@Id == entity.@Id))
{
return BadRequest(new {error = "Entity identifier does not match route identifier."});
}
var existing = await _context.blogging_Comment_DBSet.FindAsync(@Id);
if (existing == null)
{
return NotFound();
}
_context.Entry(existing).State = EntityState.Detached;
var ormModel = entity.ToOrmModel();
_context.blogging_Comment_DBSet.Attach(ormModel);
_context.Entry(ormModel).State = EntityState.Modified;
try
{
await _context.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException ex)
{
var exceptionEntry = ex.Entries.Single();
var clientObject = (blogging_Comment_OrmModel) exceptionEntry.Entity;
var databaseValues = exceptionEntry.GetDatabaseValues();
if (databaseValues == null)
{
ModelState.AddModelError(string.Empty, "Unable to save changes. The specified entity was deleted.");
}
else
{
var databaseObject = (blogging_Comment_OrmModel) databaseValues.ToObject();
if (databaseObject.@PostId != clientObject.@PostId)
{
ModelState.AddModelError("PostId", $"Current value: {databaseObject.PostId}");
}
if (databaseObject.@AuthorSSN != clientObject.@AuthorSSN)
{
ModelState.AddModelError("AuthorSSN", $"Current value: {databaseObject.AuthorSSN}");
}
if (databaseObject.@AuthorFirstName != clientObject.@AuthorFirstName)
{
ModelState.AddModelError("AuthorFirstName", $"Current value: {databaseObject.AuthorFirstName}");
}
if (databaseObject.@AuthorLastName != clientObject.@AuthorLastName)
{
ModelState.AddModelError("AuthorLastName", $"Current value: {databaseObject.AuthorLastName}");
}
if (databaseObject.@Content != clientObject.@Content)
{
ModelState.AddModelError("Content", $"Current value: {databaseObject.Content}");
}
if (databaseObject.@DateTime != clientObject.@DateTime)
{
ModelState.AddModelError("DateTime", $"Current value: {databaseObject.DateTime}");
}
}
return BadRequest(ModelState);
}
return Ok();
}
[HttpDelete("{Id}")]
public async Task<IActionResult> Delete(System.Int32 @Id)
{
var entity = await _context.blogging_Comment_DBSet.FindAsync(@Id);
if (entity == null)
{
return NotFound();
}
_context.Remove(entity);
await _context.SaveChangesAsync();
return Ok();
}
}
public class ModelStateValidationAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext context)
{
if (!context.ModelState.IsValid)
{
context.Result = new BadRequestObjectResult(context.ModelState);
}
base.OnActionExecuting(context);
}
}
public class NullValidationAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext context)
{
var nullArguments = context.ActionArguments.Where(a => a.Value == null).ToList();
if (nullArguments.Any())
{
context.Result = new BadRequestObjectResult(new
{
arguments = nullArguments.Select(a => $"The {a.Key} argument is required.")
});
}
base.OnActionExecuting(context);
}
}
}
Built With
Contributing
Versioning
We use SemVer for versioning. For the versions available, see the tags on this repository.
Authors
- Sergey Kolodiy
See also the list of contributors who participated in this project.
License
This project is licensed under the MIT License - see the LICENSE.md file for details
Acknowledgments
Note that the project description data, including the texts, logos, images, and/or trademarks,
for each open source project belongs to its rightful owner.
If you wish to add or remove any projects, please contact us at [email protected].