数据库首先使用POCOS



我是实体框架的新手,我正在尝试与 pocos 一起工作。大多数教程似乎是数据库首先生成的代码代码带有 pocos 。没有太多(尽管有几个)与pocos一起处理数据库> 。

我的设置:我试图在有点大的现有项目中使用EF。简而言之,我尝试了以下设置。

我有一个包含单个 EDMX模型的项目,连接到单个表本地db 。接下来,我从 model.designer.cs 中复制了生成的代码 。然后,我将代码生成策略设置为。然后,我创建上下文类如下。

public class LocalDB : ObjectContext
{
    public const string ConnectionString = "name=LocalEntities";
    public const string ContainerName = "LocalEntities";
    public ObjectSet<Product_Listing> OpenList;
    public LocalDB() :  base(ConnectionString, ContainerName) 
    {
        OpenList = CreateObjectSet<Product_Listing>(); //InvalidOperationException!!
    }
}

问题:当我击中构造函数时,我会得到以下例外:

InvalidOperationException

我将感谢任何帮助。我(由Lerman撰写的)本书与EF-4有关,但是我在VS 2010上的代码和.NET 4支持EF-6。正如我上面提到的,我是新手,所以只要我没有.NET 4.5。

节省自己的麻烦:

http://visualstudiogallery.msdn.microsoft.com/ee4fcff9-0c4c-4179-4179-afd9-7a2fb90f5838

entityFramework反向POCO GENERATOR

http://visualstudiogallery.msdn.microsoft.com/72A60B14-1581-4B9B-89F2-846072EFF19D

实体框架电动工具beta 4

逆向工程师代码首先 - 生成POCO类,派生的dbcontext和代码首先映射现有数据库。

========================================

晚上离开之前,请运行它。并检查屏幕保护程序的设置。(又名,可能需要一段时间,特别是"电动工具"。

========================================

这是一个西北的"客户"示例。也许您可以将其映射到您的桌子上。

namespace NorthWindyDataLayer.Models
{
    [Serializable]
    public partial class Customer
    {
        public Customer()
        {
        }
        public string CustomerID { get; set; }
        public string CompanyName { get; set; }
        public string ContactName { get; set; }
        public string ContactTitle { get; set; }
        public string Address { get; set; }
        public string City { get; set; }
        public string Region { get; set; }
        public string PostalCode { get; set; }
        public string Country { get; set; }
        public string Phone { get; set; }
        public string Fax { get; set; }
    }
}

using System.Data.Entity;
using System.Data.Entity.Infrastructure;
namespace NorthWindyDataLayer.Models
{
    public partial class WindyContext : DbContext
    {
        static WindyContext()
        {
            //Database.SetInitializer<WindyContext>(null);
        }
        public WindyContext()
            : base("Name=NorthwindContext")
        {
        }
        public DbSet<Customer> Customers { get; set; }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Configurations.Add(new CustomerMap());
        }
    }
}


using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity.ModelConfiguration;
namespace NorthWindyDataLayer.Models.Mapping
{
    public class CustomerMap : EntityTypeConfiguration<Customer>
    {
        public CustomerMap()
        {
            // Primary Key
            this.HasKey(t => t.CustomerID);
            // Properties
            this.Property(t => t.CustomerID)
                .IsRequired()
                .IsFixedLength()
                .HasMaxLength(5);
            this.Property(t => t.CompanyName)
                .IsRequired()
                .HasMaxLength(40);
            this.Property(t => t.ContactName)
                .HasMaxLength(30);
            this.Property(t => t.ContactTitle)
                .HasMaxLength(30);
            this.Property(t => t.Address)
                .HasMaxLength(60);
            this.Property(t => t.City)
                .HasMaxLength(15);
            this.Property(t => t.Region)
                .HasMaxLength(15);
            this.Property(t => t.PostalCode)
                .HasMaxLength(10);
            this.Property(t => t.Country)
                .HasMaxLength(15);
            this.Property(t => t.Phone)
                .HasMaxLength(24);
            this.Property(t => t.Fax)
                .HasMaxLength(24);
            // Table & Column Mappings
            this.ToTable("Customers");
            this.Property(t => t.CustomerID).HasColumnName("CustomerID");
            this.Property(t => t.CompanyName).HasColumnName("CompanyName");
            this.Property(t => t.ContactName).HasColumnName("ContactName");
            this.Property(t => t.ContactTitle).HasColumnName("ContactTitle");
            this.Property(t => t.Address).HasColumnName("Address");
            this.Property(t => t.City).HasColumnName("City");
            this.Property(t => t.Region).HasColumnName("Region");
            this.Property(t => t.PostalCode).HasColumnName("PostalCode");
            this.Property(t => t.Country).HasColumnName("Country");
            this.Property(t => t.Phone).HasColumnName("Phone");
            this.Property(t => t.Fax).HasColumnName("Fax");
        }
    }
}

相关内容

  • 没有找到相关文章

最新更新