خیر. میتوانید فایلهای مورد نیاز هر ماژول و area را در مسیرهای جداگانه مربوط به area قرار دهید. پوشه Scripts صرفا برای قرار گیری فایلهای مورد نیاز کتابخانه هاست(نظیر Jqeury و angular و q و ...).
نظرات مطالب
public class Category { public int Id { get; set; } public string Title { get; set; } }
public class CategoryMap : EntityTypeConfiguration<Entity.Category> { public CategoryMap() { ToTable( "Category" ); HasKey( _field => _field.Id ); Property( _field => _field.Title ) .IsRequired(); } }
using System.Data.Entity; using System.Data.Entity.Infrastructure; namespace DataAccess { public interface IUnitOfWork { DbSet<TEntity> Set<TEntity>() where TEntity : class; DbEntityEntry<TEntity> Entry<TEntity>() where TEntity : class; void SaveChanges(); void Dispose(); } }
[InheritedExport( typeof( IUnitOfWork ) )] public class DatabaseContext : DbContext, IUnitOfWork { private DbTransaction transaction = null; public DatabaseContext() { this.Configuration.AutoDetectChangesEnabled = false; this.Configuration.LazyLoadingEnabled = true; } protected override void OnModelCreating( DbModelBuilder modelBuilder ) { modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); modelBuilder.AddFormAssembly( Assembly.GetAssembly( typeof( Entity.Map.CategoryMap ) ) ); } public DbEntityEntry<TEntity> Entry<TEntity>() where TEntity : class { return this.Entry<TEntity>(); } }
public static class ModelBuilderExtension { public static void AddFormAssembly( this DbModelBuilder modelBuilder, Assembly assembly ) { Array.ForEach<Type>( assembly.GetTypes().Where( type => type.BaseType != null && type.BaseType.IsGenericType && type.BaseType.GetGenericTypeDefinition() == typeof( EntityTypeConfiguration<> ) ).ToArray(), delegate( Type type ) { dynamic instance = Activator.CreateInstance( type ); modelBuilder.Configurations.Add( instance ); } ); } }
public class BusinessBase<TEntity> where TEntity : class { public BusinessBase( IUnitOfWork unitOfWork ) { this.UnitOfWork = unitOfWork; } [Import] public IUnitOfWork UnitOfWork { get; private set; } public virtual IEnumerable<TEntity> GetAll() { return UnitOfWork.Set<TEntity>().AsNoTracking(); } public virtual void Add( TEntity entity ) { try { UnitOfWork.Set<TEntity>().Add( entity ); UnitOfWork.SaveChanges(); } catch { throw; } finally { UnitOfWork.Dispose(); } } }
public class Category : BusinessBase<Entity.Category> { [ImportingConstructor] public Category( [Import( typeof( IUnitOfWork ) )] IUnitOfWork unitOfWork ) : base( unitOfWork ) { } }
public class Plugin { public void Run() { AggregateCatalog catalog = new AggregateCatalog(); Container = new CompositionContainer( catalog ); CompositionBatch batch = new CompositionBatch(); catalog.Catalogs.Add( new AssemblyCatalog( Assembly.GetExecutingAssembly() ) ); batch.AddPart( this ); Container.Compose( batch ); } public CompositionContainer Container { get; private set; } }
class Program { static void Main( string[] args ) { Plugin plugin = new Plugin(); plugin.Run(); Category category = new Category(plugin.Container.GetExportedValue<IUnitOfWork>()); category.GetAll().ToList().ForEach( _record => Console.Write( _record.Title ) ); } }
//add a reference to "Elmah.dll"
using System;
using System.ServiceModel.Channels;
using System.ServiceModel.Dispatcher;
using System.Web;
namespace ElmahWcf
{
public class HttpErrorHandler : IErrorHandler
{
#region IErrorHandler Members
public bool HandleError(Exception error)
{
return false;
}
public void ProvideFault(Exception error, MessageVersion version, ref Message fault)
{
if (error == null)
return;
if (HttpContext.Current == null) //In case we run outside of IIS
return;
Elmah.ErrorSignal.FromCurrentContext().Raise(error);
}
#endregion
}
}
//add a ref to "System.ServiceModel" assembly
using System;
using System.Collections.ObjectModel;
using System.ServiceModel;
using System.ServiceModel.Channels;
using System.ServiceModel.Description;
using System.ServiceModel.Dispatcher;
namespace ElmahWcf
{
public class ServiceErrorBehaviorAttribute : Attribute, IServiceBehavior
{
Type errorHandlerType;
public ServiceErrorBehaviorAttribute(Type errorHandlerType)
{
this.errorHandlerType = errorHandlerType;
}
#region IServiceBehavior Members
public void AddBindingParameters(
ServiceDescription serviceDescription,
ServiceHostBase serviceHostBase, Collection<ServiceEndpoint> endpoints,
BindingParameterCollection bindingParameters)
{ }
public void ApplyDispatchBehavior(
ServiceDescription serviceDescription,
ServiceHostBase serviceHostBase)
{
IErrorHandler errorHandler;
errorHandler = (IErrorHandler)Activator.CreateInstance(errorHandlerType);
foreach (ChannelDispatcherBase cdb in serviceHostBase.ChannelDispatchers)
{
ChannelDispatcher cd = cdb as ChannelDispatcher;
cd.ErrorHandlers.Add(errorHandler);
}
}
public void Validate(
ServiceDescription serviceDescription,
ServiceHostBase serviceHostBase)
{ }
#endregion
}
}
[ServiceErrorBehavior(typeof(HttpErrorHandler))] //Integrating with ELMAH
[EnableClientAccess()]
public partial class MyDomainService : LinqToEntitiesDomainService<myEntities>
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<sectionGroup name="elmah">
<section name="security" requirePermission="false" type="Elmah.SecuritySectionHandler, Elmah"/>
<section name="errorLog" requirePermission="false" type="Elmah.ErrorLogSectionHandler, Elmah" />
<section name="errorMail" requirePermission="false" type="Elmah.ErrorMailSectionHandler, Elmah" />
<section name="errorFilter" requirePermission="false" type="Elmah.ErrorFilterSectionHandler, Elmah"/>
<section name="errorTweet" requirePermission="false" type="Elmah.ErrorTweetSectionHandler, Elmah"/>
</sectionGroup>
</configSections>
<elmah>
<security allowRemoteAccess="1" />
<errorLog type="Elmah.XmlFileErrorLog, Elmah" logPath="~/Errors" />
<!-- <errorMail
from="errors@site.net"
to="nasiri@site.net"
subject="prj-error"
async="true"
smtpPort="25"
smtpServer="mail.site.net"
noYsod="true" /> -->
</elmah>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah"/>
<add name="DomainServiceModule"
preCondition="managedHandler"
type="System.ServiceModel.DomainServices.Hosting.DomainServiceHttpModule, System.ServiceModel.DomainServices.Hosting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</modules>
<validation validateIntegratedModeConfiguration="false" />
<handlers>
<add name="Elmah" verb="POST,GET,HEAD" path="myelmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />
</handlers>
</system.webServer>
<system.web>
<globalization
requestEncoding="utf-8"
responseEncoding="utf-8"
/>
<authentication mode="Forms">
<!--one month ticket-->
<forms name=".403AuthV"
cookieless="UseCookies"
slidingExpiration="true"
protection="All"
path="/"
timeout="43200" />
</authentication>
<httpHandlers>
<add verb="POST,GET,HEAD" path="myelmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />
</httpHandlers>
<httpModules>
<add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah"/>
<add name="DomainServiceModule"
type="System.ServiceModel.DomainServices.Hosting.DomainServiceHttpModule, System.ServiceModel.DomainServices.Hosting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</httpModules>
<compilation debug="true" targetFramework="4.0">
<assemblies>
<add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</assemblies>
</compilation>
</system.web>
<connectionStrings>
</connectionStrings>
<system.serviceModel>
<serviceHostingEnvironment
aspNetCompatibilityEnabled="true"
multipleSiteBindingsEnabled="true" />
</system.serviceModel>
</configuration>
throw new Exception("This is an ELMAH test");
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
Virtual Events for Developers
While in-person conferences and events may be cancelled, there are still many online opportunities for you to stay connected. Browse the full list of virtual events to continue to grow your skills as a developer, contribute to interesting projects, and meet like-minded developers around the world.
public class AppUserRole : IdentityUserRole<int> { public virtual AppUser User { get; set; } public virtual AppRole Role { get; set; } public DateTimeOffset? ExpirationDate { get; set; } }
public virtual ActionResult Report(Guid personId) { return View(); } public virtual ActionResult LoadReportSnapshot(Guid personId) { var person = _bossService.GetPersonViewModel(personId);
در ضمن کلاسهای Customer و Order به صورت زیر است و LazyLoading هم غیر فعال نیست:
public class Customer { public Customer() { Orders = new ObservableCollection<Order>(); } public virtual ICollection<Order> Orders { get; set; } } public class Order { public virtual Customer Customer { get; set; } }