简体   繁体   中英

Dynamic Custom Attributes with Entity Framework

OK,

This is probably not simple but I figured I would throw it out there:

I get the idea of extending an Model-First entity in EF with a partial class to add data annotation elements somthing like this:

[Required]
string MyString {get;set;}

However, if I am in a multi-tenant system where I may want to customize which fields are actually required when passed to the end client can I dynamically set the annotation depending on how the client has configured the setting, say in another table for instance?

Update: In the multi-tenant system there are at least two databases. One that stores system configuration information. In addition each customer would have their own individual database. The system DB controls routing and selecting the proper customer database from there.

Any insights or ideas anyone has on how to accomplish this would be great!

Thanks, Brent

You can't change attributes dynamically.

One option would be to crate the types dynamically, probably inheriting some class (or implementing an interface), that you actually work with. Although I'm not sure this would work with EF.

Another possibility is if EF had another way you could tell it the same thing, but I don't know EF much, so I can't tell if something like that exists.

If you are using EF 4.1, you could create different DbContexts, referencing the same entities, but provide different mappings using the Fluent Api.

Here is a link to a video that describes using the api. Fluent Api

Note: Your database would need to be setup to accommodate all the different configurations. For example, if in one context, "FirstName" is required, and in another it is not, your db should allow NULL in order to cope with both situations.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM