[英]how to create postgreSQL database using EF code first
我有兩個類 Class1 和 Class2
[Table("CLASS1", Schema = "public")]
public class Class1
{
public int Class1Id { get; set; }
public string Name1 { get; set; }
}
[Table("CLASS2", Schema = "public")]
public class Class2
{
public int Class2Id { get; set; }
public string Name2 { get; set; }
public int Class1Id { get; set; }
public virtual Class1 c1 { get; set; }
我定義了 DatabaseContext :
public sealed class DatabaseContext : DbContext
{
private static readonly DatabaseContext instance = new DatabaseContext();
public static DatabaseContext Instance
{
get
{
return instance;
}
}
private DatabaseContext()
: base("maconnexion")
{
Database.SetInitializer<DatabaseContext>(null);
}
public DbSet<Class1> table1{ get; set; }
public DbSet<Class2> table2{ get; set; }
}
我已將這些行添加到我的 App.config
<DbProviderFactories>
<add name="Npgsql Data Provider" invariant="Npgsql" description="Data Provider for PostgreSQL" type="Npgsql.NpgsqlFactory, Npgsql" />
</DbProviderFactories>
<connectionStrings>
<add name="maconnexion"
connectionString="Server=127.0.0.1;Port=5432;Database=DB_Ticketing;UserId=postgres;Password=slots2013;" providerName="Npgsql" />
</connectionStrings>
我在 PostgreSQL 中創建了一個名為 DB_Ticketing 的數據庫。 但是當我執行我的代碼時,表 table1 和 table2 沒有添加到我的數據庫中。
按如下方式配置您的應用程序: 第 1 步(配置 App.config)(復制並粘貼)
<?xml version="1.0"?>
<configuration>
<configSections>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework,Version=6.0.0.0, Culture=neutral,PublicKeyToken=b77a5c561934e089" requirePermission="false"/>
</configSections>
<connectionStrings>
<add name="maconnexion" connectionString="User Id=postgres;Password=slots2013;Host=localhost;Database=DB_Ticketing;" providerName="Npgsql"/></connectionStrings>
<startup>
<supportedRuntime version="v4.0"sku=".NETFramework,Version=v4.0,Profile=Client"/>
</startup>
<entityFramework>
<providers>
<provider invariantName="Npgsql" type="Npgsql.NpgsqlServices,Npgsql.EntityFramework">
</provider>
</providers>
<defaultConnectionFactory type="Npgsql.NpgsqlConnectionFactory,Npgsql"/>
</entityFramework>
<system.data>
<DbProviderFactories>
<remove invariant="Npgsql"></remove>
<add name="Npgsql Data Provider" invariant="Npgsql" description="Data Provider for PostgreSQL" type="Npgsql.NpgsqlFactory, Npgsql"/>
</DbProviderFactories>
</system.data>
第 2 步(配置您的 ContextDB)
public class NameContext:DbContext
{
public NameContext():base(nameOrConnectionString:"maconnexion"){}
public DbSet<Class1> Class1s{ get; set; }
public DbSet<Class2> Class2s{ get; set; }}
第 3 步(調用方法 Insert)
public static void Insert(Class1 o)
{
using (var context = new NameContext())
{ //Where "o" it is an object, for example Class1 o=new Class1();
context.Class1s.Add(o);
context.SaveChanges();
}}
注意:我建議使用 DataAnnotations 來創建您的業務類,例如: [Table("MyTable", Schema = "MySchema")] public class ob_group { [Key] [Column("nseq_grp")] public int Nseq_grp { get;set;} 更詳細的可以看: http : //www.entityframeworktutorial.net/code-first/dataannotation-in-code-first.aspx希望有用
我知道已經很長時間了,但人們仍然在這篇文章中。 這是最簡單的信息。 基本,如何配置。 帶有 PostgreSQL 的實體框架 6: http : //lvasquez.github.io/2014-11-24/EntityFramework-PostgreSql/
如何初始化代碼優先。 非常圖形。 PostgreSQL 的實體框架代碼優先: https : //dotblogs.com.tw/wuanunet/2016/02/26/entity-framework-code-first-postgresql
可選。 避免復數: 如何關閉實體框架 5 的復數表創建?
注意:如果你決定不使用 code-first,記住 PostgreSQL 默認設置小寫,所以定義是否用小寫裝飾或創建表區分大小寫(create table public."XyZa")
我是用 sql 查詢做的
SELECT 'public class '||c.table_name ||' { '||
string_agg(case when c.character_maximum_length is not null then '[StringLength(' || to_char(c.character_maximum_length,'9999')||')]' else '' end ||
'public ' ||
(case when c.datetime_precision is not null then ' DateTime' else
case when c.numeric_precision is not null then ' int' else 'string' end end)||
case c.is_nullable when 'YES' then '?'end || ' ' ||c.column_name,'{get;set;} ') ||' {get;set;} }'
FROM information_schema.columns c
where c.table_schema ='public'
group by c.table_name
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.