实体框架code先用T4模板 [英] Entity Framework code first with T4 template

查看:369
本文介绍了实体框架code先用T4模板的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要通过T4模板,如下述文章创造code-第一种观点认为:

<一个href="http://blog.3d-logic.com/2012/06/13/entity-framework-$c$cfirst-view-generation-templates-on-visual-studio-$c$c-gallery/">Article这里

但它引起

  

运行时异常

如下图所示。为什么?

我的连接字符串是在的App.config 配置正确。

我的应用程序的 N层基于。所以这的DbContext驱动类是在数据层

这是我的连接字符串

 &LT;添加名称=PawLoyalty connectionString="Server=.;database=PawLoyalty;Trusted_connection=true;pooling=true;MultipleActiveResultSets=True"的providerName =System.Data.SqlClient的/&GT;
 

我使用的EF 4.1使用VS 2010。

  

运行转换:System.Reflection.TargetInvocationException:异常被抛出   通过调用的目标。
   ---> System.ArgumentException:参数'nameOrConnectionString不能为空,空或只包含空格

。      

在System.Data.Entity.ModelConfiguration.Utilities.RuntimeFailureMethods.ReportFailure(ContractFailureKind contractFailureKind,字符串userMessage,字符串conditionText,   异常的InnerException)
  在System.Data.Entity.DbContext..ctor(字符串nameOrConnectionString)
  在PawLoyalty.Data.DataCatalog..ctor(布尔allowLazyLoading)在D:\我的博客\测试   项目\ PawLoyalty \ PawLoyalty \ PawLoyalty.Data \ DataCatalog.cs:行31
  在PawLoyalty.Data.DataCatalog..ctor()在D:\我的博客\测试项目\ PawLoyalty \ PawLoyalty \ PawLoyalty.Data \ DataCatalog.cs:行26
  ---内部异常堆栈跟踪的结尾---
  在System.RuntimeTypeHandle.CreateInstance(RuntimeType型,布尔publicOnly,布尔NOCHECK,布尔和放大器; canBeCached,   RuntimeMethodHandleInternal和放大器;构造函数,布尔和放大器; bNeedSecurityCheck)
  在System.RuntimeType.CreateInstanceSlow(布尔publicOnly,布尔skipCheckThis,布尔fillCache,StackCrawlMark和放大器; stackMark)
  在System.RuntimeType.CreateInstanceDefaultCtor(布尔publicOnly,布尔skipCheckThis,布尔fillCache,StackCrawlMark和放大器;   stackMark)
  在System.Activator.CreateInstance(类型类型,布尔非公开)
  在System.Activator.CreateInstance(类型类型)
  在Microsoft.VisualStudio.TextTemplatingD6E95B37BD0790EBBCC7DB570AD3E2AC.GeneratedTextTransformation.GetEdmx(Type   contextType)
  在Microsoft.VisualStudio.TextTemplatingD6E95B37BD0790EBBCC7DB570AD3E2AC.GeneratedTextTransformation.GenerateViews(String contextTypeName)
  在Microsoft.VisualStudio.TextTemplatingD6E95B37BD0790EBBCC7DB570AD3E2AC.GeneratedTextTransformation.TransformText()
  在Microsoft.VisualStudio.TextTemplating.TransformationRunner.RunTransformation(TemplateProcessingSession   会议,字符串源,ITextTemplatingEngineHost主机,字符串和放大器;   结果)

更新

我的的DbContext派生类看起来像下面。

  [导出(typeof运算(ISecurityDataCatalog))]
    [导出(typeof运算(IMappingDataCatalog))]
    [导出(typeof运算(IPawLoyaltyDataCatalog))]
    [PartCreationPolicy(CreationPolicy.NonShared)
    公共类DataCatalog:的DbContext,IPawLoyaltyDataCatalog,ISecurityDataCatalog,IMappingDataCatalog
    {

        公共静态字符串的ConnectionString {获得;组; }
        公共静态字符串AccountToken {获得;组; }

        公共DataCatalog()
            :这个(假)
        {
        }

        公共DataCatalog(布尔allowLazyLoading = FALSE)
            :基地(的ConnectionString)
        {
            Configuration.LazyLoadingEnabled = allowLazyLoading;
        }

        保护覆盖无效OnModelCreating(DbModelBuilder模型构建器)
        {
            modelBuilder.ComplexType&LT; D​​iscountValue&GT;()属性(D =&GT; d.Fixed)。先后precision(18,2);
            modelBuilder.ComplexType&LT; D​​iscountValue&GT;()属性(D =&GT; d.Percentage)。先后precision(18,4);
            modelBuilder.Entity&LT; InvoiceFee&GT;()属性(D =&GT; d.Fixed)。先后precision(18,2);
            modelBuilder.Entity&LT; InvoiceFee&GT;()属性(D =&GT; d.Percentage)。先后precision(18,4);
            modelBuilder.Entity&LT; InvoiceFee&GT;()属性(D =&GT; d.Total)。先后precision(18,4);
            modelBuilder.Entity&LT;发票&GT;()属性(D =&GT; d.Discount)。先后precision(18,2);
            modelBuilder.Entity&LT;发票&GT;()HasRequired(I =&GT; i.Appointment)。.WithOptional(A =&GT; a.Invoice).WillCascadeOnDelete(假);
            modelBuilder.Entity&LT; InvoiceItem&GT;()属性(D =&GT; d.Price)。先后precision(18,2);
            modelBuilder.Entity&LT; InvoiceItem&GT;()属性(D =&GT; d.LatestTotal)。先后precision(18,2);
            modelBuilder.Entity&LT; InvoiceItem&GT;()HasRequired(I =&GT; i.Allocation)。.WithOptional(A =&GT; a.InvoiceItem).WillCascadeOnDelete(假);
            modelBuilder.Entity&LT; InvoicePayment&GT;()属性(D =&GT; d.Amount)。先后precision(18,4);
            modelBuilder.Entity&LT; ServicePrice&GT;()属性(D =&GT; d.Price)。先后precision(18,2);
            modelBuilder.Entity&LT; ServiceBreedPrice&GT;()属性(D =&GT; d.Price)。先后precision(18,2);
            modelBuilder.Entity&LT; ProviderPolicy&GT;()属性(D =&GT; d.SalesTax)。先后precision(18,4);
            modelBuilder.Entity&LT; ProviderCredit&GT;()属性(D =&GT; d.Balance)。先后precision(18,2);
            modelBuilder.Entity&LT; CombinedServiceDiscountDefinition&GT;()HasRequired(C =&GT; c.PrimaryService)。.WithMany()WillCascadeOnDelete(假);
            modelBuilder.Entity&LT; CombinedServiceDiscountDefinition&GT;()HasRequired(C =&GT; c.SecondaryService)。.WithMany()WillCascadeOnDelete(假);

            modelBuilder.Entity&LT; MedicalRecord&GT;()HasRequired(M =&GT; m.Pet)。.WithOptional(P =&GT; p.Medical).WillCascadeOnDelete(假);
            modelBuilder.Entity&LT; BehavioralRecord&GT;()HasRequired(B =&GT; b.Pet)。.WithOptional(P =&GT; p.Behavioral).WillCascadeOnDelete(假);
            modelBuilder.Entity&LT; D​​ietRecord&GT;()HasRequired(D =&GT; d.Pet)。.WithOptional(P =&GT; p.Diet).WillCascadeOnDelete(假);

            modelBuilder.Entity&LT;供应商&GT;()HasOptional(P =&GT; p.Profile).WithRequired(P =&GT; p.Provider).WillCascadeOnDelete(真正的);

            modelBuilder.Entity&LT; ProviderProfile&GT;()HasOptional(P =&GT; p.Policy)。.WithRequired(P =&GT; p.Profile).WillCascadeOnDelete(真正的);
            modelBuilder.Entity&LT; ProviderProfile&GT;()HasOptional(P =&GT; p.CustomerRequirements)。.WithRequired(P =&GT; p.Profile).WillCascadeOnDelete(真正的);
            modelBuilder.Entity&LT; ProviderProfile&GT;()HasOptional(P =&GT; p.PaymentProfile)。.WithRequired(P =&GT; p.Profile).WillCascadeOnDelete(真正的);

            modelBuilder.Entity&LT;资源&GT;()的hasMany(R =&GT; r.Availability)。.WithRequired(A =&GT; a.Resource).WillCascadeOnDelete(真正的);

            Database.SetInitializer&LT; D​​ataCatalog&GT;(NULL);
            base.OnModelCreating(模型构建器);
        }

        公共常量字符串的serviceKey =PawLoyalty;

        公共DbSet&LT;的StreetAddress&GT; StreetAddresses {获得;组; }
        公共DbSet&LT;任命&GT;约会{获得;组; }
        公共DbSet&LT;发票&GT;发票{获得;组; }
        公共DbSet&LT; InsuranceCarrier&GT; InsuranceCarriers {获得;组; }
        公共DbSet&LT;促进code取代;促销codeS {获得;组; }

        //提供程序类
        公共DbSet&LT;供应商&GT;供应商{获得;组; }
        公共DbSet&LT; ProviderProfile&GT; ProviderProfiles {获得;组; }
        //公共DbSet&LT; ProviderResourceItem&GT; ProviderResourceItems {获得;组; }
        公共DbSet&LT;配置&GT; ResourceAllocations {获得;组; }
        公共DbSet&LT; ResourceAvailability&GT; ResourceAvailabilities {获得;组; }
        公共DbSet&LT;资源&GT;资源{获得;组; }

        ///&LT;总结&gt;
        ///封装了对象上下文分离方法
        ///&LT; /总结&gt;
        ///&LT; typeparam名=T&GT;&LT; / typeparam&GT;
        ///&LT; PARAM NAME =T&GT;&LT; /参数&GT;
        公共无效分离&LT; T&GT;(T t)其中T:类
        {
            // TODO:这个需要?隐藏在CTP5接口暗示罕见的使用落后。
            ((IObjectContextAdapter)本).ObjectContext.Detach(T);
        }

        //所有者类
        公共DbSet&LT; MedicalRecordOrder&GT;订单{获得;组; }
        公共DbSet&LT;所有者&GT;业主{获得;组; }
        公共DbSet&LT;宠物&GT;宠物{获得;组; }
        公共DbSet&LT;品种&GT;品种{获得;组; }
        公共DbSet&LT; PetProvider&GT; PetProviders {获得;组; }

        //安全目录项
        公共DbSet&lt;使用者&GT;用户{获得;组; }

        // Bing地图目录项
        公共DbSet&LT; KnownLocation&GT; KnownLocations {获得;组; }
        公共DbSet&LT; KnownPostal code取代; KnownPostal codeS {获得;组; }

        公共DbSet&LT; QueuedEmail&GT; QueuedEmails {获得;组; }
        公共DbSet&LT; InvoicePayment&GT; InvoicePayments {获得;组; }
        公共DbSet&LT;员工&GT;员工{获得;组; }
        公共DbSet&LT;赛程&GT;附表{获得;组; }
        公共DbSet&LT;认购&GT;订阅{获得;组; }
        公共DbSet&LT; EmailSubscription&GT; EmailSubscriptions {获得;组; }

        公共DbSet&LT; ResourceAvailabilityUpdate&GT; ResourceAvailabilityUpdates {获得;组; }
        公共DbSet&LT; EmployeeAvailabilityUpdate&GT; EmployeeAvailabilityUpdates {获得;组; }
        公共DbSet&LT; InvoiceConfiguration&GT; InvoiceConfigurations {获得;组; }

        公共DbSet&LT;疫苗&GT;疫苗{获得;组; }
        公共DbSet&LT; TourEmail&GT; TourEmails {获得;组; }
        公共DbSet&LT; ReservationRequest&GT; ReservationRequest {获得;组; }
        //公共DbSet&LT; ReservationRequestPets&GT; ReservationRequestPets {获得;组; }
        公共DbSet&LT;接种&GT;接种疫苗{获得;组; }
        公共DbSet&LT; SpecialInstruction&GT; SpecialInstructions {获得;组; }

        公共DbSet&LT;产品&GT;产品{获得;组; }
        公共DbSet&LT;产品分类与GT; ProductCategories {获得;组; }
        公共DbSet&LT; VendorStock&GT; VendorStocks {获得;组; }
        公共DbSet&LT;&车内有GT; ShoppingCarts {获得;组; }
        公共DbSet&LT; SaleDetail&GT; SaleDetails {获得;组; }
        公共DbSet&LT;销售&GT;销售{获得;组; }
        公共DbSet&LT; SalePayment&GT; SalePayments {获得;组; }

        公共DbSet&LT; PetService&GT; PetServices {获得;组; }
        公共DbSet&LT; PetServicePrice&GT; PetServicePrices {获得;组; }

        公共DbSet&LT; MiscProperty&GT; MiscProperties {获得;组; }
        公共DbSet&LT; ProviderMiscProperty&GT; ProviderMiscProperties {获得;组; }

        公共DbSet&LT; ProviderAuthorizedCreditCard&GT; ProviderAuthorizedCreditCards {获得;组; }
        公共DbSet&LT; AuthorizedCreditCard&GT; AuthorizedCreditCards {获得;组; }
        公共DbSet&LT; ProviderPackage&GT; ProviderPackages {获得;组; }

        公共DbSet&LT; ProviderEmail preference&GT; ProviderEmail preferences {获得;组; }
        公共DbSet&LT; EmailType&GT; EmailTypes {获得;组; }

        公共DbSet&LT; RetailSaleReturn&GT; RetailSaleReturns {获得;组; }
        公共DbSet&LT; ServiceRefund&GT; ServiceRefunds {获得;组; }

    }
 

解决方案

问题的DbContext派生类的(DataCatalog)参数少的构造连接字符串的问题。

通过支持 @Pawel 我已经整理出我的问题。 你只需要给出如下参数少的构造连接字符串。

 公共类DataCatalog:的DbContext
    {
        公共静态字符串的ConnectionString {获得;组; }

        公共DataCatalog():基地(ConnectionString的?PawLoyalty)
        {

        }
    }
 

注意1:如果您在不同的层(类库项目),那么你必须给在的app.config 文件连​​接字符串

注意2:做你的的修改之后必须编译之前运行T4模板项目再次

希望这将有助于部分之一的未来。

I am going to create code-first view by using a T4 template like the below mentioned article says:

Article here

But it's causing an

run time exception

like below. Why's that?

My connection string is configured properly in App.config.

My application is N-Tier based.So That DbContext driven class is in Data Layer.

This is my connection String:

<add name="PawLoyalty" connectionString="Server=.;database=PawLoyalty;Trusted_connection=true;pooling=true;MultipleActiveResultSets=True" providerName="System.Data.SqlClient" />

I am using EF 4.1 with vs 2010.

Running transformation: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation.
---> System.ArgumentException: The argument 'nameOrConnectionString' cannot be null, empty or contain only white space.

at System.Data.Entity.ModelConfiguration.Utilities.RuntimeFailureMethods.ReportFailure(ContractFailureKind contractFailureKind, String userMessage, String conditionText, Exception innerException)
at System.Data.Entity.DbContext..ctor(String nameOrConnectionString)
at PawLoyalty.Data.DataCatalog..ctor(Boolean allowLazyLoading) in D:\My Blog\Test Projects\PawLoyalty\PawLoyalty\PawLoyalty.Data\DataCatalog.cs:line 31
at PawLoyalty.Data.DataCatalog..ctor() in D:\My Blog\Test Projects\PawLoyalty\PawLoyalty\PawLoyalty.Data\DataCatalog.cs:line 26
--- End of inner exception stack trace ---
at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck)
at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark)
at System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark)
at System.Activator.CreateInstance(Type type, Boolean nonPublic)
at System.Activator.CreateInstance(Type type)
at Microsoft.VisualStudio.TextTemplatingD6E95B37BD0790EBBCC7DB570AD3E2AC.GeneratedTextTransformation.GetEdmx(Type contextType)
at Microsoft.VisualStudio.TextTemplatingD6E95B37BD0790EBBCC7DB570AD3E2AC.GeneratedTextTransformation.GenerateViews(String contextTypeName)
at Microsoft.VisualStudio.TextTemplatingD6E95B37BD0790EBBCC7DB570AD3E2AC.GeneratedTextTransformation.TransformText()
at Microsoft.VisualStudio.TextTemplating.TransformationRunner.RunTransformation(TemplateProcessingSession session, String source, ITextTemplatingEngineHost host, String& result)

Updated

My DbContext Derived class looks like below.

 [Export(typeof(ISecurityDataCatalog))]
    [Export(typeof(IMappingDataCatalog))]
    [Export(typeof(IPawLoyaltyDataCatalog))]
    [PartCreationPolicy(CreationPolicy.NonShared)]
    public class DataCatalog : DbContext, IPawLoyaltyDataCatalog, ISecurityDataCatalog, IMappingDataCatalog
    {

        public static string ConnectionString { get; set; }
        public static string AccountToken { get; set; }

        public DataCatalog()
            : this(false)
        {
        }

        public DataCatalog(bool allowLazyLoading = false)
            : base(ConnectionString)
        {
            Configuration.LazyLoadingEnabled = allowLazyLoading;
        }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.ComplexType<DiscountValue>().Property(d => d.Fixed).HasPrecision(18, 2);
            modelBuilder.ComplexType<DiscountValue>().Property(d => d.Percentage).HasPrecision(18, 4);
            modelBuilder.Entity<InvoiceFee>().Property(d => d.Fixed).HasPrecision(18, 2);
            modelBuilder.Entity<InvoiceFee>().Property(d => d.Percentage).HasPrecision(18, 4);
            modelBuilder.Entity<InvoiceFee>().Property(d => d.Total).HasPrecision(18, 4);
            modelBuilder.Entity<Invoice>().Property(d => d.Discount).HasPrecision(18, 2);
            modelBuilder.Entity<Invoice>().HasRequired(i => i.Appointment).WithOptional(a => a.Invoice).WillCascadeOnDelete(false);
            modelBuilder.Entity<InvoiceItem>().Property(d => d.Price).HasPrecision(18, 2);
            modelBuilder.Entity<InvoiceItem>().Property(d => d.LatestTotal).HasPrecision(18, 2);
            modelBuilder.Entity<InvoiceItem>().HasRequired(i => i.Allocation).WithOptional(a => a.InvoiceItem).WillCascadeOnDelete(false);
            modelBuilder.Entity<InvoicePayment>().Property(d => d.Amount).HasPrecision(18, 4);
            modelBuilder.Entity<ServicePrice>().Property(d => d.Price).HasPrecision(18, 2);
            modelBuilder.Entity<ServiceBreedPrice>().Property(d => d.Price).HasPrecision(18, 2);
            modelBuilder.Entity<ProviderPolicy>().Property(d => d.SalesTax).HasPrecision(18, 4);
            modelBuilder.Entity<ProviderCredit>().Property(d => d.Balance).HasPrecision(18, 2);
            modelBuilder.Entity<CombinedServiceDiscountDefinition>().HasRequired(c => c.PrimaryService).WithMany().WillCascadeOnDelete(false);
            modelBuilder.Entity<CombinedServiceDiscountDefinition>().HasRequired(c => c.SecondaryService).WithMany().WillCascadeOnDelete(false);

            modelBuilder.Entity<MedicalRecord>().HasRequired(m => m.Pet).WithOptional(p => p.Medical).WillCascadeOnDelete(false);
            modelBuilder.Entity<BehavioralRecord>().HasRequired(b => b.Pet).WithOptional(p => p.Behavioral).WillCascadeOnDelete(false);
            modelBuilder.Entity<DietRecord>().HasRequired(d => d.Pet).WithOptional(p => p.Diet).WillCascadeOnDelete(false);

            modelBuilder.Entity<Provider>().HasOptional(p => p.Profile).WithRequired(p => p.Provider).WillCascadeOnDelete(true);

            modelBuilder.Entity<ProviderProfile>().HasOptional(p => p.Policy).WithRequired(p => p.Profile).WillCascadeOnDelete(true);
            modelBuilder.Entity<ProviderProfile>().HasOptional(p => p.CustomerRequirements).WithRequired(p => p.Profile).WillCascadeOnDelete(true);
            modelBuilder.Entity<ProviderProfile>().HasOptional(p => p.PaymentProfile).WithRequired(p => p.Profile).WillCascadeOnDelete(true);

            modelBuilder.Entity<Resource>().HasMany(r => r.Availability).WithRequired(a => a.Resource).WillCascadeOnDelete(true);

            Database.SetInitializer<DataCatalog>(null);
            base.OnModelCreating(modelBuilder);
        }

        public const string ServiceKey = "PawLoyalty";

        public DbSet<StreetAddress> StreetAddresses { get; set; }
        public DbSet<Appointment> Appointments { get; set; }
        public DbSet<Invoice> Invoices { get; set; }
        public DbSet<InsuranceCarrier> InsuranceCarriers { get; set; }
        public DbSet<PromotionCode> PromotionCodes { get; set; }

        // Provider Classes
        public DbSet<Provider> Providers { get; set; }
        public DbSet<ProviderProfile> ProviderProfiles { get; set; }
        //public DbSet<ProviderResourceItem> ProviderResourceItems { get; set; }
        public DbSet<Allocation> ResourceAllocations { get; set; }
        public DbSet<ResourceAvailability> ResourceAvailabilities { get; set; }
        public DbSet<Resource> Resources { get; set; }

        /// <summary>
        /// Wraps the object context detach method
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="t"></param>
        public void Detach<T>(T t) where T : class
        {
            // TODO: Is this needed? Hidden behind an interface in CTP5 implying infrequent usage.
            ((IObjectContextAdapter)this).ObjectContext.Detach(t);
        }

        // Owner Classes
        public DbSet<MedicalRecordOrder> Orders { get; set; }
        public DbSet<Owner> Owners { get; set; }
        public DbSet<Pet> Pets { get; set; }
        public DbSet<Breed> Breeds { get; set; }
        public DbSet<PetProvider> PetProviders { get; set; }

        // Security Catalog Items
        public DbSet<User> Users { get; set; }

        // Bing Maps Catalog items
        public DbSet<KnownLocation> KnownLocations { get; set; }
        public DbSet<KnownPostalCode> KnownPostalCodes { get; set; }

        public DbSet<QueuedEmail> QueuedEmails { get; set; }
        public DbSet<InvoicePayment> InvoicePayments { get; set; }
        public DbSet<Employee> Employees { get; set; }
        public DbSet<Schedule> Schedules { get; set; }
        public DbSet<Subscription> Subscriptions { get; set; }
        public DbSet<EmailSubscription> EmailSubscriptions { get; set; }

        public DbSet<ResourceAvailabilityUpdate> ResourceAvailabilityUpdates { get; set; }
        public DbSet<EmployeeAvailabilityUpdate> EmployeeAvailabilityUpdates { get; set; }
        public DbSet<InvoiceConfiguration> InvoiceConfigurations { get; set; }

        public DbSet<Vaccine> Vaccines { get; set; }
        public DbSet<TourEmail> TourEmails { get; set; }
        public DbSet<ReservationRequest> ReservationRequest { get; set; }
        //public DbSet<ReservationRequestPets> ReservationRequestPets { get; set; }
        public DbSet<Vaccination> Vaccinations { get; set; }
        public DbSet<SpecialInstruction> SpecialInstructions { get; set; }

        public DbSet<Product> Products { get; set; }
        public DbSet<ProductCategory> ProductCategories { get; set; }
        public DbSet<VendorStock> VendorStocks { get; set; }
        public DbSet<ShoppingCart> ShoppingCarts { get; set; }
        public DbSet<SaleDetail> SaleDetails { get; set; }
        public DbSet<Sale> Sales { get; set; }
        public DbSet<SalePayment> SalePayments { get; set; }

        public DbSet<PetService> PetServices { get; set; }
        public DbSet<PetServicePrice> PetServicePrices { get; set; }

        public DbSet<MiscProperty> MiscProperties { get; set; }
        public DbSet<ProviderMiscProperty> ProviderMiscProperties { get; set; }

        public DbSet<ProviderAuthorizedCreditCard> ProviderAuthorizedCreditCards { get; set; }
        public DbSet<AuthorizedCreditCard> AuthorizedCreditCards { get; set; }
        public DbSet<ProviderPackage> ProviderPackages { get; set; }

        public DbSet<ProviderEmailPreference> ProviderEmailPreferences { get; set; }
        public DbSet<EmailType> EmailTypes { get; set; }

        public DbSet<RetailSaleReturn> RetailSaleReturns { get; set; }
        public DbSet<ServiceRefund> ServiceRefunds { get; set; }

    }

解决方案

problem is DbContext Derived class's (DataCatalog) parameter less constructor connection string issue.

With support of @Pawel I have sorted out my problem. You just need to give connection string for parameter less constructor as below.

 public class DataCatalog : DbContext
    {
        public static string ConnectionString { get; set; }

        public DataCatalog() : base(ConnectionString ?? "PawLoyalty")
        {

        }  
    }

Note 1 : If you're in separate layer (class library project) then you have to give your connection string on App.Config file.

Note 2 : After doing all the changes you have to compile your project before run T4 template again

Hope this will help some one in future.

这篇关于实体框架code先用T4模板的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆