aliblue
چهارشنبه 31 اردیبهشت 1393, 20:16 عصر
با سلام. من میخواهم یکی از Property های مدلم که لیستی از یک class است، در دیتابیس به صورت string ذخیره شود.یعنی برای مثال در کد زیر وقتی در برنامه ، 2 شی از work میسازم(work1.x=5 , work1.y=6) و (work2.x=7,work2.y=8) و آن ها رابه Person.Works اضافه می کنم، در دیتابیس در فیلدی به نام MyWorks مقدار "5-6,7-8" ذخیره شود و دوباره وقتی می خواهم person.Works را بخوانم، مقادیر فیلد Myworks که string است، split شود و در لیستی از work قرار گیرد. این کدها را در مدلم نوشتم. آیا درسته؟
public class Person
{
public int PersonId { get; set; }
public string MyWorks { get; set; }
[NotMapped]
public List<Work> Works
{
get
{
List<Work> returnedWorks = new List<Work>();
if (!String.IsNullOrWhiteSpace(MyWorks))
{
foreach (var work in MyWorks.Split(',').ToList())
{
Work newWork = new Work();
newWork.x = work.Split('-')[0];
newWork.y = work.Split('-')[1];
returnedWorks.Add(newWork);
}
}
return returnedWorks;
}
set
{
string newWorks = "";
int i = 1;
foreach (var work in value)
{
newWorks += work.x + "-" + work.y;
if (i < value.Count)
{
newWorks += ",";
i++;
}
}
MyWorks = newWorks;
}
}
}
public class Person
{
public int PersonId { get; set; }
public string MyWorks { get; set; }
[NotMapped]
public List<Work> Works
{
get
{
List<Work> returnedWorks = new List<Work>();
if (!String.IsNullOrWhiteSpace(MyWorks))
{
foreach (var work in MyWorks.Split(',').ToList())
{
Work newWork = new Work();
newWork.x = work.Split('-')[0];
newWork.y = work.Split('-')[1];
returnedWorks.Add(newWork);
}
}
return returnedWorks;
}
set
{
string newWorks = "";
int i = 1;
foreach (var work in value)
{
newWorks += work.x + "-" + work.y;
if (i < value.Count)
{
newWorks += ",";
i++;
}
}
MyWorks = newWorks;
}
}
}