"ageiter" की गतिविधियाँ

Let's say, for example, you have an entity that you need to add two 1 to 1 relationships with the same external Entity.

For example, for the entity "Exchange" you need to map two "Money" entities as 1 on 1

Actually, in ABP Suite, there is no way to customize the property name of the navigation classes for Domain or Application.Contracts. Even if you try to customize the "Entity Name" or "Dto Name" in the advanced tap, if you change, for example, "Entity Name", your class will be named "BlueMoney" and the property name also as "BlueMoney" but the correct should be, class "Money" and property name "BlueMoney".

That's for the case when you need to repeat the 1-1 relationship with the same entity.

Related to this, I would also like to repeat my wish that you can create several navigation properties for the same entity with a self-defined name. No matter whether 1:1 or 1:n. Currently you can define the property name (Id property) yourself, but the navigation properties are then numbered with the default name.

In version 8.1, the following structure was generated by the Suite for the EntityFramework (for a Blazor Server project):

And now in 8.2.0-rc.3 it looks like this (for a Blazor Web App project):

Basically, I find it much clearer now. But I would like to add additions to the model, which I previously did in the “...DbContextBase” class. If I now do this in the “...DbContext” class, it will be deleted again the next time I generate it. How could I do this so that it remains there regardless of generation?

I would like to add the following for the decimal properties:

protected override void OnModelCreating(ModelBuilder builder)
{
    base.OnModelCreating(builder);
    
    builder.Entity<Disability>(b =>
    {
        b.Property(x => x.DegreeOfDisability).HasPrecision(18, 4);
    });
}

Using ABP 8.2.0-rc.3

I have generated the following entities with Blazor UI:

  • "Incident" as master
  • "Disability" as child of "Incident"

In the child entity there is a decimal property with min & max values.

In the generated Razor page these are expected in the constant class of the master entity.

I think the error can be found in this template:

Possibility for inheritance of entities.

https://learn.microsoft.com/en-us/ef/core/modeling/inheritance

https://community.abp.io/posts/inheritance-strategies-in-entity-framework-core-7-hg82tp4h?utm_source=twitter&utm_medium=announcement

उत्तर

I understand the problem... In my case, it's mainly about the modal control, which doesn't work. If at least that would work, I would be happy. I could live with the rest of the error messages. But without the modal control, of course the whole admin area doesn't work.

I think the Blazorise controls are the main problem. Can you address the need there as well?

There is already an issue there: https://github.com/Megabit/Blazorise/issues/5460

उत्तर

But which part of the code contains inline CSS? The one from ABP? The one from Blazorise? Because I have fixed everything in my code.

Have you been able to reproduce it with the ABP Suite template? What alternatives do I have if the customer insists on a secure CSP?

उत्तर

Sure... but it's the same as in the code above ;-)

उत्तर
  1. Generate Blazor Server project with ABP Suite template (I have version 8.0.4)
  2. Add the following method in the BlazorModule:
private void ConfigureSecurityHeaders()
{
    Configure<AbpSecurityHeadersOptions>(options =>
    {
        options.UseContentSecurityPolicyHeader = true;
        options.ContentSecurityPolicyValue = "base-uri 'self'; default-src 'none'; img-src 'self' data:; script-src 'self'; style-src 'self'; font-src 'self'; connect-src 'self'; frame-ancestors 'none'";
    });
}
  1. Call it under ConfigureServices:

  2. If necessary, the order in OnApplicationInitialization must be changed so that app.UseAbpSecurityHeaders() is called after app.UseRouting() (see https://github.com/abpframework/abp/issues/19653)

  3. Testing... Open the console in the browser and open a modal dialog, for example.

Thanks for the hint and the link.

I have now implemented this as follows:

AppService method:

[AuthorizeWithOrCondition(MyProjectPermissions.TargetSystems.UserWrite, MyProjectPermissions.TargetSystems.AgentWrite)]
public virtual async Task CreateAsync(TargetSystemCreateDto input)
{
   ...
}

AuthorizeAttribute:

    public class AuthorizeWithOrConditionAttribute : AuthorizeAttribute,  IAuthorizationRequirementData
    {
        public string[] PermissionNames { get; }

        public AuthorizeWithOrConditionAttribute(params string[] permissionNames)
        {
            PermissionNames = permissionNames;
        }

        public IEnumerable<IAuthorizationRequirement> GetRequirements()
        {
            yield return new PermissionsRequirement(PermissionNames, requiresAll: false);
        }
    }
उत्तर

I would like the resources (localized strings) to have better names (keys). Or that they could be customized.

The problem is as follows: You often have the same property names in different entities. For example Name, Description, Remark, IsActive, ... But now you might want to call the "Name" property "Customer name" in the customer views and translate Name as "Company name" in the company views. This currently requires a lot of manual adjustments (or you have to be extremely careful when regenerating and make manual adjustments again).

I have adapted the templates accordingly so that this is generated according to the following scheme: @L["Entity:%%entity-name%%:%%property-name%%"]"

This makes future updates of the templates very time-consuming for me ( this is why I asked for a better update option). Because there are about 28 templates that I had to modify. But a structured resource file was more important to me.

Possible solution: ...would be if you could also specify the resource key to be used for a property in the suite. As a default, you could use %%property-name%% as in the past, which would also ensure backwards compatibility. But you would have the option of overwriting this.

I have also given all common resources (generated by the suite) the prefix "Common" (e.g. @L["Common:Update"]). This allows me to sort the resource file and see immediately which strings have been generated and belong together. These strings are defined in Frontend.Blazor.Page.Partials.Localizations.txt.

153 प्रविष्टियों में 1 से 10 दिखा रहा है
Made with ❤️ on ABP v8.2.0-preview Updated on मार्च 25, 2024, 15:11