Base solution for your next web application

Activities of "pankajmathur"

Question

Hi,

We have existing database. Each table has a PrimaryKey column like Below: Table: CusCustomer Field: CustomerKey - long - PrimaryKey

Table: InvProduct Field: ProductKey - long - PrimaryKey.

Now, if a create an entity class and derive it from FullAuditedEntity<Int64>, it will assume that there would be Id field in the table having datatype as long.

How can we create an entity having above table structure?

Regards, Mahendra

Hi,

Can you please provide a sample example showing how to call a stored procedure from my appService.

Regards, Mahendra

The procedure has some input and some output parameter. The stored procedure is not related to an entity. It's a generic stored procedure that I need to call and get the value in Output parameter.

Please help urgently....

Answer

Hi,

Thanks for your reply.

One more question. How Can I get rid of Identity Column that it creates by default. I want to specify my own value in this field from service. Something like below.

public async Task CreateTaxCode(CreateTaxCodeInput input)
        {
            long abc = await _iVendRepository.GetNextPrimaryKeyValue();
            input.Id = abc; 
            var TaxCode = input.MapTo<TaxCode>();
            await _TaxCodeRepository.InsertAsync(TaxCode);
        }

Currently, due to Identity column, it discards my value that I set in the Id column.

Answer

I got same error when I switched on redis cache. Below is stack trace of error.

at Abp.MultiTenancy.TenantCache2.CreateTenantCacheItem(TTenant tenant) at Castle.Proxies.TenantCache2Proxy.CreateTenantCacheItem_callback(Tenant tenant) at Castle.Proxies.Invocations.TenantCache2_CreateTenantCacheItem.InvokeMethodOnTarget() at Castle.DynamicProxy.AbstractInvocation.Proceed() at Abp.Domain.Uow.UnitOfWorkInterceptor.Intercept(IInvocation invocation) at Castle.DynamicProxy.AbstractInvocation.Proceed() at Castle.Proxies.TenantCache2Proxy.CreateTenantCacheItem(Tenant tenant) at Abp.MultiTenancy.TenantCache2.<>c__DisplayClass7_0.<GetOrNull>b__0() at Abp.Runtime.Caching.TypedCacheExtensions.<>c__DisplayClass0_02.<Get>b__0(TKey k) at Abp.Runtime.Caching.CacheExtensions.<>c__DisplayClass3_02.<Get>b__0(String k) at Abp.Runtime.Caching.CacheBase.Get(String key, Func2 factory) at Abp.Runtime.Caching.CacheExtensions.Get[TKey,TValue](ICache cache, TKey key, Func2 factory) at Abp.Runtime.Caching.TypedCacheWrapper2.Get(TKey key, Func2 factory) at Abp.Runtime.Caching.TypedCacheExtensions.Get[TKey,TValue](ITypedCache2 cache, TKey key, Func1 factory) at Abp.MultiTenancy.TenantCache2.GetOrNull(Int32 tenantId) at Abp.MultiTenancy.TenantCache2.Get(Int32 tenantId) at Castle.Proxies.TenantCache2Proxy.Get_callback(Int32 tenantId) at Castle.Proxies.Invocations.TenantCache2_Get.InvokeMethodOnTarget() at Castle.DynamicProxy.AbstractInvocation.Proceed() at Abp.Domain.Uow.UnitOfWorkInterceptor.Intercept(IInvocation invocation) at Castle.DynamicProxy.AbstractInvocation.Proceed() at Castle.Proxies.TenantCache2Proxy.Get(Int32 tenantId) at Abp.Zero.EntityFramework.DbPerTenantConnectionStringResolver.GetNameOrConnectionString(DbPerTenantConnectionStringResolveArgs args) at Abp.Zero.EntityFramework.DbPerTenantConnectionStringResolver.GetNameOrConnectionString(ConnectionStringResolveArgs args) at Abp.Domain.Uow.UnitOfWorkBase.ResolveConnectionString(ConnectionStringResolveArgs args) at Abp.EntityFramework.Uow.EfUnitOfWork.GetOrCreateDbContext[TDbContext](Nullable1 multiTenancySide) at Abp.EntityFramework.Uow.UnitOfWorkExtensions.GetDbContext[TDbContext](IActiveUnitOfWork unitOfWork, Nullable1 multiTenancySide) at Abp.EntityFramework.Uow.UnitOfWorkDbContextProvider1.GetDbContext(Nullable1 multiTenancySide) at Castle.Proxies.EfRepositoryBase3Proxy_4.get_Context_callback() at Castle.Proxies.Invocations.EfRepositoryBase3_get_Context_6.InvokeMethodOnTarget() at Castle.DynamicProxy.AbstractInvocation.Proceed() at Abp.Domain.Uow.UnitOfWorkInterceptor.PerformSyncUow(IInvocation invocation, UnitOfWorkOptions options) at Abp.Domain.Uow.UnitOfWorkInterceptor.PerformUow(IInvocation invocation, UnitOfWorkOptions options) at Abp.Domain.Uow.UnitOfWorkInterceptor.Intercept(IInvocation invocation) at Castle.DynamicProxy.AbstractInvocation.Proceed() at Castle.Proxies.EfRepositoryBase3Proxy_4.get_Context() at Abp.EntityFramework.Repositories.EfRepositoryBase3.get_Table() at Castle.Proxies.EfRepositoryBase3Proxy_4.get_Table_callback() at Castle.Proxies.Invocations.EfRepositoryBase3_get_Table_6.InvokeMethodOnTarget() at Castle.DynamicProxy.AbstractInvocation.Proceed() at Abp.Domain.Uow.UnitOfWorkInterceptor.PerformSyncUow(IInvocation invocation, UnitOfWorkOptions options) at Abp.Domain.Uow.UnitOfWorkInterceptor.PerformUow(IInvocation invocation, UnitOfWorkOptions options) at Abp.Domain.Uow.UnitOfWorkInterceptor.Intercept(IInvocation invocation) at Castle.DynamicProxy.AbstractInvocation.Proceed() at Castle.Proxies.EfRepositoryBase3Proxy_4.get_Table() at Castle.Proxies.EfRepositoryBase3Proxy_4.GetAll_callback() at Castle.Proxies.Invocations.EfRepositoryBase3_GetAll_6.InvokeMethodOnTarget() at Castle.DynamicProxy.AbstractInvocation.Proceed() at Abp.Domain.Uow.UnitOfWorkInterceptor.PerformSyncUow(IInvocation invocation, UnitOfWorkOptions options) at Abp.Domain.Uow.UnitOfWorkInterceptor.PerformUow(IInvocation invocation, UnitOfWorkOptions options) at Abp.Domain.Uow.UnitOfWorkInterceptor.Intercept(IInvocation invocation) at Castle.DynamicProxy.AbstractInvocation.Proceed() at Castle.Proxies.EfRepositoryBase3Proxy_4.GetAll() at Abp.EntityFramework.Repositories.EfRepositoryBase3.<FirstOrDefaultAsync>d__12.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Abp.Threading.InternalAsyncHelper.<AwaitTaskWithPostActionAndFinallyAndGetResult>d__51.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Abp.Authorization.Users.AbpUserStore2.<FindByNameOrEmailAsync>d__20.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Abp.Authorization.Users.AbpUserStore2.<FindByNameOrEmailAsync>d__21.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Abp.Threading.InternalAsyncHelper.<AwaitTaskWithPostActionAndFinallyAndGetResult>d__51.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task) at Abp.Authorization.AbpLogInManager3.<LoginAsyncInternal>d__35.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Abp.Authorization.AbpLogInManager3.<LoginAsync>d__34.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Abp.Threading.InternalAsyncHelper.<AwaitTaskWithPostActionAndFinallyAndGetResult>d__51.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at CitiXsys.ManagementConsoleWeb.Web.Controllers.AccountController.

Answer

Resolved after reading suggestion from below link.

<a class="postlink" href="https://github.com/aspnetboilerplate/aspnetboilerplate/issues/2076">https://github.com/aspnetboilerplate/as ... ssues/2076</a>

As per documentation, Framework support Single Deployment - Multiple Database. Is any one implemented this or any documentation for step by step tenant creation?

I have tried to make new database per tenant but it is not creating new database. If any one has explored it, please help me out on this.

Hi, We need to support custom business functionality of each tenant using Extensibility(MEF)/Plugin. We have used Microsoft Extensibility Framework to send messages to UI and get result in business code based on Tenant.

Application is able to get AddOnDLL/Plugin but not able to access current UnitOfWorkManger or IActiveUnitOfWork in Plugin DLL.

Is there any way to get current IActiveUnitOfWork in Plugin without ABPModule?

Thank You,

Hi Everyone,

I was able to do this by below steps.

  1. Login host application.
  2. Create Tenant from there
  3. It will ask to use Host DB or create new DB
  4. Choose new DB. It will create new database for that tenant.
  5. Login application with provided configuration. No need to change DB connection string anywhere.

Thank You,

Question

Hi,

I have just downloaded the ASP.Net MVC 5.X & JQuery project with Version (4.1.0(latest version) to see the new feature such as "Subscription management & Paypal payment integration" and "Dashboard for edition, tenant & income statistics", but I can't see the changes in the Edition Page.

Attached is the Edition page that I see. Am I missing something?

Showing 1 to 10 of 123 entries