Generate EF code first DBContext from existing Database
SET NOCOUNT off
begin
declare @UserTables table
(
Id [int],
Name [nvarchar](200),
PropertyName [nvarchar](200)
)
insert into @UserTables
select id, name ,
case
when Right(Name,2) in ('ss','ch') then Name + 'es'
when Right(Name,2) = 'ff' then left(Name, len(Name)-2) + 'ves'
when Right(Name,2) = 'fe' then left(Name, len(Name)-2) + 'ves'
when Right(Name,1) = 'f' then left(Name, len(Name)-1) + 'ves'
when Right(Name,1) = 'y' then
case when IsPrecedingVowel = 1
then Name + 's'
else left(Name, len(Name)-1) + 'ies'
end
when Right(Name,1) = 'o' then
case when IsPrecedingVowel = 1
then Name + 's'
else Name + 'es'
end
else Name + 's'
end as PropertyName
from ( select id, name,
case when left(right(name,2),1) in ('a','e','i','o','u') then 1 else 0 end as IsPrecedingVowel
from sysobjects where xtype = 'U' ) as x
--select * from INFORMATION_SCHEMA.TABLES
declare @EntityPriFix [nvarchar](20);
declare @Id int;
declare @TableName [nvarchar](200);
declare @PropertyName [nvarchar](200);
set @EntityPriFix = 'POCO';
declare tableCursor cursor for
select * from @UserTables
print 'using System.Data.Entity;'
print ' public class ' + db_name() + 'Context : DbContext'
print ' {'
print ' public QslLoyaltyContext(string connectionString)'
print ' : base(connectionString)'
print ' { }'
OPEN tableCursor
FETCH NEXT FROM tableCursor
INTO @Id, @TableName, @PropertyName
WHILE @@FETCH_STATUS = 0
BEGIN
print ' public DbSet<'+ @EntityPriFix + @TableName +'> ' + @PropertyName +' { get; set; }'
FETCH NEXT FROM tableCursor
INTO @Id, @TableName, @PropertyName
END
CLOSE tableCursor;
print ' protected override void OnModelCreating(DbModelBuilder modelBuilder)'
print ' {'
OPEN tableCursor
FETCH NEXT FROM tableCursor
INTO @Id, @TableName, @PropertyName
WHILE @@FETCH_STATUS = 0
BEGIN
print ' modelBuilder.Entity<'+ @EntityPriFix + @TableName +'>().ToTable("' + @TableName +'");'
FETCH NEXT FROM tableCursor
INTO @Id, @TableName, @PropertyName
END
print ' }'
CLOSE tableCursor;
DEALLOCATE tableCursor;
print ' }'
print ''
end
Output will be like as below
using System.Data.Entity;
public class QslLoyaltyContext : DbContext
{
public QslLoyaltyContext(string connectionString)
: base(connectionString)
{ }
public DbSet<POCOUsers> Userss { get; set; }
public DbSet<POCORoles> Roless { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<POCOUsers>().ToTable("Users");
modelBuilder.Entity<POCORoles>().ToTable("Roles");
}
}
No comments :
Post a Comment