none
TextTemplate для генерации DTO (Entity Framework) RRS feed

  • Общие обсуждения

  • Доброго времени суток, господа! Поставлена задача создать TextTEmplate который будет генерить DataObject для Entity Framework. Сейчас опишу подробнее: есть некий DBContext; В этом контексте модельки описаны как properties. Вот как выглядит контекст (это просто примерчик, всего с одной моделькой):

    public class MyContext : DbContext
        {
            public MyContext()
                : base("DefaultConnection")
            {
                this.Configuration.AutoDetectChangesEnabled = true;
            }
    
            public DbSet<Contact> Contacts { get; set; }
           
    
            protected override void OnModelCreating(DbModelBuilder modelBuilder)
            {
                base.OnModelCreating(modelBuilder);
            }
        }
    
        [Table("Contacts")]
        public class Contact
        {
            [Key]
            public int ContactId { get; set; }
    
            [Required]
            public string ContactName { get; set; }
        }
    }

    Собсно мне нужно чтобы TextTemplate генерил DTO для каждой модельки, описанной в контексте. Руководства искал, но ничего понятного не нашел. Вот только нашел один туториал: http://weblogs.asp.net/cibrax/archive/2009/03/11/code-generation-with-t4-an-entities-to-dto-example.aspx

    Подскажите, это то что нужно? Или может подскажете где найти хороший туториал по этой теме? Спасибо за внимание!

    27 декабря 2013 г. 1:26

Все ответы

  • Я бы посоветовал вам рассматривать эту тему отсюда. А туториал, который нашли вы неплохой, вам следует более внимательно изучить его.

    Сделаем содержимое сообщества лучше, вместе!

    27 декабря 2013 г. 6:14
    Модератор
  • Ерунда какая-то. Почему-то namespace не видит. Вот содержимое texttemplate:

    <#@ template debug="true" hostspecific="true" language="C#" #>
    <#@ output extension=".cs" #>
    <#@ Import Namespace="System.Collections.Generic" #>
    <#@ Import Namespace="System.Reflection" #>
    <#@ Import Namespace="System.IO" #>
    
    using System;
    
    namespace ConsoleApplication1
    {
    	public class myclass
    	{
    
    		<# 
    		Type myType = typeof(ConsoleApplication1.MyContext);
    		var ss = myType.Name; 
    		#>
    
    
    		<#=  
    		ss 
    		#>
    
    	}
    
    }
    
    	

    Вот класс MyContext:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    
    using System.Data.Common;
    
    using System.ComponentModel;
    
    namespace ConsoleApplication1
    {
    public class MyContext : DbContext
        {
            public MyContext()
                : base("DefaultConnection")
            {
                this.Configuration.AutoDetectChangesEnabled = true;
            }
    
            public DbSet<Contact> Contacts { get; set; }
           
    
            protected override void OnModelCreating(DbModelBuilder modelBuilder)
            {
                base.OnModelCreating(modelBuilder);
            }
        }
    
        [Table("Contacts")]
        public class Contact
        {
            [Key]
            public int ContactId { get; set; }
    
            [Required]
            public string ContactName { get; set; }
        }
    }
    }

    В результате имеем ошибку: Compiling transformation: Не удалось найти имя типа или пространства имен "ConsoleApplication1" (пропущена директива using или ссылка на сборку?)

    27 декабря 2013 г. 7:19