Thak you! Worked like a charm
Ok I think I am somewhere near the answer with .OnDelete(DeleteBehavior.Cascade) but for some reason calling await ChannelAppService.DeleteAsync(id); just marks the Channel entity as deleted (IsDeleted == true) but General doesn't get deleted..
builder.Entity<Channel>(b =>
{
b.ToTable("Channel");
b.ConfigureByConvention();
//Define the relation
b.HasOne(x => x.General)
.WithOne(x => x.Channel)
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
});
builder.Entity<General>(b =>
{
b.ToTable("Generals");
b.ConfigureByConvention();
});
I'm just calling this from a Blazor page
await ChannelAppService.DeleteAsync(id);
I know this is likely just EF stuff but since I have wasted 1 question I might as well get the help after all :-)
I was wondering if there was a good way to delete related records, just like you can get all the records with WithDetailsAsync()?
Or will I just have to add all the services (of the related entities I want to delte) to the main one (channelAppService in my example) and iterate through them and manually delete each one (see example 1)?
/* code in my ChannelAppService */
public async Task<ChannelDto> GetWithDetailsAsync(Guid id)
{
//Get the related records General and Settings from _channelRepository
var queryable = await _channelRepository.WithDetailsAsync(x => x.General, x => x.Settings);
//Where Channel is == id
var query = queryable.Where(x => x.Id == id);
//Get Channel with General and Settings back
return ObjectMapper.Map<Channel, ChannelDto>(await AsyncExecuter.FirstOrDefaultAsync(query));
}
// What would be the recomended way to delete the related records of channel?
public async Task DeleteWithDetailsAsync(Guid id)
{
// 1. example
// But what if the first delete works but the rest fail?
_channelRepository.DeleteAsync(id);
_generalRepository.DeleteAsync(theGeneralId);
_settingsRepository.DeleteAsync(theSettingsId);
// 2. example
//OR is there simpler way like this maybe (with some more code obviously) ?
await AsyncExecuter.DeleteWithDetails(channel);
}
This must be fairly common to do so isn't there some examples you can share with me?
Yes I'm still in my test phase. I'm aiming on using version 4.3 so hopefully it will be ready when I´m :-)
Hi
I'm getting CS0104 ambiguous reference errors when adding entities in Suite. Unique namespaces don´t seem to be enough.
Here are two examples of this
1.
First I had this one
C:\Dev\Test\aspnet-core\src\Test.EntityFrameworkCore\EntityFrameworkCore\TestEntityFrameworkCoreModule.cs(55,49): error CS0104: 'EfCoreLanguageRepository' is an ambiguous reference between 'Test.Languages.EfCoreLanguageRepository' and 'Volo.Abp.LanguageManagement.EntityFrameworkCore.EfCoreLanguageRepository' [C:\Dev\Test\aspnet-core\src\Test.EntityFrameworkCore\Test.EntityFrameworkCore.csproj]
For now, I´ll call it "OurLanguages" (or something.. naming is hard) but I would prefer it just being Language and the DB table AppLanguage.
2.
And now I just had this one that I find even stranger
error CS0104: 'TimeZone' is an ambiguous reference between 'Test.TimeZones.TimeZone' and 'System.TimeZone'
Why
Your ABP Framework version. 4.2.2 Your database provider: EF Core Blazor
Thank you so much for this great answer! It has really helped me to scope the work that lies ahead and the tech I should choose. I will explore the path you suggest and do some MVP stuff next couple of days.
After that, I'll mark this question answered and let you know what I decided to do.
Hi, I have tried to read everything on abp.io multi-tenancy (github/discussions/formums) but I´m unsure what route I should take and would like some guidance on how to start the project the correct way.
Scenario: "We give 3party entities access to use our portal and they sell their material back to others (clients)"
So my question is basically what architecture approach should we choose based on our requirements and abp.io capabilities? What is possible and/or best approach and/or do you have examples (that attempt to do something similar) for us?
I hope I made myself clear enough, and what my requirements are. If not just shoot back.