PDA

View Full Version : ابهام در مکان مدل برنامه



aghayex
دوشنبه 11 آذر 1392, 18:50 عصر
با سلام
من مشغول یه برنامه به زبان سیلورلایت هستم که در اون از wcf ria service و ef5 code first استفاده می کنم .
در برنامه اومدم مدلی که دیتابیس از روی اون ساخته میشه رو در بخش asp که میزبان برنامه سیلورلایت هست قرار دادم و در بخش سیلورلایت هر موقع که بخوام از روی یک موجودیت ( مثلا person ) نمونه بسازم یه رفرنس به مدل خودم در بخش asp می زنم و مدلمو می سازم

var sample= new test.web.model.entity.person()
sample.name="ali";

اما این روش چند مشکل برای من داشت که یکی از اونها اعتبار سنجی بود . می می خواستم از اینترفیس inotifydataerrorinfo استفاده کنم اما چون در بخش asp نمیشه از این اینترفیس استفاده کرد مجبور شدم یه نمونه از مدل خودم رو همزمان در پروژه سیلورلایت ایجاد کنم به این صورت :

public class localperson:inotifypropertychanged
{
public test.web.model.person peson{set;get}
public localperson()
{
person=new test.web.model.entity.person();
}
public string name
{
set
{
person.name=value;
PropertyChanged("name");
}
get
{
return person.name;
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void PropertyChanged(String propertyName )
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}

کلیت قضیه اینه اما ممکنه سوال براتون پیش بیاد که ایترفیس inotifydataerrorinfo اینجا پیاده سازی نشده که به دلیل اینکه مشکل من این اینترفیس نیست نزاشتمش .
با این تفاسیر آیا من اصولی کار کردم ؟
آیا راه بهتری هست ؟

aghayex
سه شنبه 12 آذر 1392, 23:17 عصر
خواهشا دوستانی که دستی در برنامه نویسی حرفه دارن از جمله مدیران جواب این سوالو بدن

d_derakhshani
شنبه 05 بهمن 1392, 00:25 صبح
راستش نفهمیدم چی گفتی؟ یکم بازش کن! این جمله منظورت چیه؟

در بخش سیلورلایت هر موقع که بخوام از روی یک موجودیت ( مثلا person ) نمونه بسازم یه رفرنس به مدل خودم در بخش asp می زنم و مدلمو می سازم
توی اعتبار سنجی سمت سرور چه مشکلی داشتی؟

aghayex
شنبه 05 بهمن 1392, 07:17 صبح
جواب سوال خودمو می دم تا دوستانی که این سوال براشون پیش میاد برای خودشون جوابی داشته باشن . نه دوستانی که ازشون سورس یه کنترل سفارشی رو می خوای هزار و یک بهمونه و کلاس برات میزارن .
من یه مدل از دیتابیسم در بخش وب برنامه دارم , اما در بخش سیلورلایت در فرم های ویرایش اطلاعات بعضا در یک فرم پیش میاد که ما با 90 درصد ستون های اون تیبل کار داریم یا دوست داریم یه اعتبار سنجی حرفه ای و خوبی در سمت سیلورلایت داشته باشیم . حالا اگه بیاییم توابع اعتبار سنجی رو سمت وب یا همون سرور در مدل برنامه تعبیه کنیم با دو مشکل برمی خوریم :
1 ) بردن اعتبار سنجی در سمت سرور یعنی رفت و برگشت های بی مورد .
2 ) یک سری اینترفیس ها در سمت سرور اصلا کار نمی کنن
برای اینکار اومدم یه مدل دیگه شبیه به مدل اصلی در سمت سیلورلایت گذاشتم و در پارامت های ست و گت اعتبار سنجی و شروط خودمو در این مدل قرار دادم حتی بعضا یه پرو پرتی ترکیبی هم ایجاد کردم و در فرم هام این مدل رو به کنترل ها بایند کردم .

d_derakhshani
شنبه 05 بهمن 1392, 09:30 صبح
راه شما قطعا اشتباه نیست و جواب میده اما راه بهتر استفاده از shared library یا portable library هست که کلاس هایی که می سازید هم توسط Silverlight قابل استفاده است هم پروژه وب یعنی جفت شون می تونن بهش ارجاع داشته باشن و به این شکل فقط یک بار کلاس مورد نظر تعریف میشه

سید علی گتمیری
سه شنبه 29 بهمن 1392, 07:54 صبح
با سلام - در کل تا حد امکان نباید کلاس رو در دو سمت بسازید همانطور که آقای derakhshani هم گفتن باید از .shared.cs استفاده کنی - کلا هم وقتی از ریا استفاده می کنی Validation ها اعمال میشه - اصلا به سمت ASp.Net ربطی نداره