webForumDet fria alternativet

Var skapa entityklass

.NET

11 svar · 672 visningar · startad av doggelito

Medlem sedan juni 20003 076 inlägg
Frågan#1

Är lite osäker hur jag ska göra här!
Har en 3-skiktsmodell aspx -> bll -> dao
På aspx sidan har jag ett formulär för att skapa en produkt (entity Product)
När man väl ska skapa sin produkt:
- Ska jag skapa en tom Product på aspx.cs och fylla med formulärvärden och skicka Product vidare till bll.
- Eller ska jag skicka värdena vidare till bll och skapa en tom Product där som sedan fylls?

Jag tycker det känns mest logiskt att skicka värdena vidare till bll och skapa ny Product där, nackdelen är att det är så helsikes många parametrar!

Medlem sedan dec. 19996 522 inlägg
#2

Vill du inte exponera dina domänobjekt i presentationen kan du använda dig av exempelvis data transfer objects, dto:er, annars låter det omständigt att skicka värden, mer upplagt för fel.

Så kontentan, vill du absolut inte använda dig av dina domänobjekt i aspx använd dto:er annars exponera objekten där och skapa dem och skicka ner dem i bll.

Medlem sedan juni 20003 076 inlägg
#3

Jag har absolut inga problem med att exponera objekten i presentationslager!
Okej, jag skapar en Product i aspx.cb och skickar den vidare.
Men förstör man inte lite av valideringsmöjligheterna då?
Jag måste alltså se till att samtliga värden är korrekt på aspx för annars får man ju en produkt med ev. fel i.
Är inte tanken med flerlagersmodell att validering ska ligga i affärsskiktet? :stud

Medlem sedan feb. 20084 inlägg
#4

Du kan skicka med värdena till ditt affärsskit och där göra en validering. När valideringen är klar skapar du en produkt annars returnerar du exception.

Medlem sedan dec. 19996 522 inlägg
#5

Titta gärna in Application Validation Block från Microsoft Patterns & Practices, fin funktionalitet för validera hela objekt, lite AOP-stuk men det vänjer man sig vid.

Validering ska ligga i flera skikt, viktigast är innan du sätter in data. Men du kanske vill använda dig av de inbyggda validatorerna i asp.net också för att snabbt ge användar feedback och lägga en del av hanteringen på klienten.

Själv använder jag Application Validation Block och använder samma regeler för att validera innan jag sätter in datan, som när jag validerar GUI, utan roundtrippen ner i lagrena.

Medlem sedan juni 20003 076 inlägg
#6

vbqSnake skrev:

Du kan skicka med värdena till ditt affärsskit och där göra en validering. När valideringen är klar skapar du en produkt annars returnerar du exception.

Mm, men då är jag tillbaka på ruta 1!
Nackdelen är att det är måååånga (ett 50-tal) parametrar till en produkt och det kommer inte bli finkod när den metoden är färdigskriven!

erka skrev:

Titta gärna in Application Validation Block från Microsoft Patterns & Practices

Tack för tipset! Ska kollas in! :)

Medlem sedan juni 20003 076 inlägg
#7

erka skrev:

Själv använder jag Application Validation Block och använder samma regeler för att validera innan jag sätter in datan, som när jag validerar GUI

Betyder det att du använder AVB även för validering på aspx-sidor?
Jag såg nämligen i quickstarten att det är möjligt!

Medlem sedan dec. 19996 522 inlägg
#8

Ja i de fallen deras proxyvalidator räcker till. Annars gör jag valideringen manuellt från mitt presentationslager via en generiskmetod som populerar en felruta som finns i en masterpage uppe i aspxen.

Medlem sedan juni 20003 076 inlägg
#9

Neeeeeeeeej, funkar inte VAB i medium trust?
Får

System.Security.SecurityException: That assembly does not allow partially trusted callers.

på raden

<val:PropertyProxyValidator ID="NameValidator" runat="server" ...
Medlem sedan jan. 20022 440 inlägg
#10

Du får lägga till

[assembly: System.Security.AllowPartiallyTrustedCallers()]

i din assembly.cs

Medlem sedan juni 20003 076 inlägg
#11

Hmm, gör jag det i en egen assambly-fil eller måste det in i orginalassamblyn?
Den kommer jag nog inte in i om inte microsoft har sourcefiler med i paketet så att jag kan kompilera om alltihop.
Dll:en heter annars: Microsoft.Practices.EnterpriseLibrary.Validation.Integration.AspNet.dll

Medlem sedan juni 20003 076 inlägg
#12

Wee hoo! :L
Tack CatZ, det gjorde susen! :bire
Det gick att kompilera om microsofts filer.

253 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)