PDA

View Full Version : سوال: مشکل در ذخیره تصاویر با Entity



rezaAcc
دوشنبه 04 بهمن 1395, 20:13 عصر
سلام
مشکل من در ذخیره تصاویر در دیتا بیس نیست و اینکار درست انجام میشه

اما مشکل موقعیه که تصویری انتخاب نمیکنی و مقدار op خالی میمونه و ارور میده...



دوستان و اساتید لطفا راهنماییم کنید که چطور میتونم مقدار op را خالی کنم و در رکوردی که کاربر نمیخاد عکسی برای پروفایلش داشته باشه ارور نده ویژوال استودیو؟؟؟

اینم کد منه:

OpenFileDialog op = new OpenFileDialog();
private void BtnAddPic_Click(object sender, EventArgs e)
{
op.Title = "انتخاب تصویر";
op.Filter = "JPEG(.jpeg)|*.jpeg| PNG(.png)|*.png| JPG(.jpg)|*.jpg";

op.ShowDialog();

if (op.FileName!="")
{
Image newImg = Image.FromFile(op.FileName);
pbxPictureAx.Image = newImg;
}
}

و تصاویر را اینجوری ذخیره میکنم


private void bubbleButton1_Click(object sender, ClickEventArgs e)
{

TblAshkha tba = new TblAshkha
{
FName = txtFName.Text,
LName = txtLName.Text,
PictureAx = File.ReadAllBytes(op.FileName)
};

db.TblAshkhas.AddObject(tba);
db.SaveChanges();

البته کد ها رو خلاصه کردم و مدل هم ایجاد شده

mr.sirwan
دوشنبه 04 بهمن 1395, 23:50 عصر
به جای این خط ها:
op.ShowDialog();

if (op.FileName!="")
{
Image newImg = Image.FromFile(op.FileName);
pbxPictureAx.Image = newImg;
}


از این خط کد ها استفاده کن:

if (op.ShowDialog() == DialogResult.OK)
{
Image newImg = Image.FromFile(op.FileName);
pbxPictureAx.Image = newImg;
}

و به جای این خط:

PictureAx = File.ReadAllBytes(op.FileName);
این خط کد هارو جایگذاری کن:


if (pbxPictureAx.Image != null)
{
Bitmap oBitmap = new Bitmap(pbxPictureAx.Image);
System.IO.MemoryStream oMemory = new System.IO.MemoryStream();
oBitmap.Save(oMemory, System.Drawing.Imaging.ImageFormat.Jpeg);
PictureAx = oMemory.GetBuffer();
}
else
{
PictureAx = null;
}

rezaAcc
سه شنبه 05 بهمن 1395, 01:13 صبح
به جای این خط ها:
op.ShowDialog();

if (op.FileName!="")
{
Image newImg = Image.FromFile(op.FileName);
pbxPictureAx.Image = newImg;
}


از این خط کد ها استفاده کن:

if (op.ShowDialog() == DialogResult.OK)
{
Image newImg = Image.FromFile(op.FileName);
pbxPictureAx.Image = newImg;
}

و به جای این خط:

PictureAx = File.ReadAllBytes(op.FileName);
این خط کد هارو جایگذاری کن:


if (pbxPictureAx.Image != null)
{
Bitmap oBitmap = new Bitmap(pbxPictureAx.Image);
System.IO.MemoryStream oMemory = new System.IO.MemoryStream();
oBitmap.Save(oMemory, System.Drawing.Imaging.ImageFormat.Jpeg);
PictureAx = oMemory.GetBuffer();
}
else
{
PictureAx = null;
}



ممنون از پاسختون ولی کد های بالا رو که جایگزین کردم بازم ارور میده:
اینم عکسش:
144238
متن ارور هم:
This property cannot be set to a null value
در ضمن من PictureAx را در SQL بصورت Image ثبت کردم و تیک Allow Nulls هم برداشتم

ممنون میشم اگه راه دیگه ای برای امتحان بگید؟

Mahmoud.Afrad
سه شنبه 05 بهمن 1395, 01:39 صبح
وقتی نمیخواهید مقداری ذخیره کنید باید Allow Nulls برابر true باشه. بعد از تغییر در دیتابیس ، مدل رو هم آپدیت کنید.

rezaAcc
سه شنبه 05 بهمن 1395, 15:08 عصر
وقتی نمیخواهید مقداری ذخیره کنید باید Allow Nulls برابر true باشه. بعد از تغییر در دیتابیس ، مدل رو هم آپدیت کنید.

ممنونم واقعا
مدل وقتی آپدیت شد تغییری نکرد که بصورت دستی Nullable فیلد رو True کردم.
ممنون از شما دوست عزیز