I want to show Components in a tabs , so first of all create few components. In this project we have three components, First View Component public class AllViewComponent : ViewComponent { private readonly UserManager<ApplicationUser> _userManager; public AllViewComponent(UserManager<ApplicationUser> userManager) { _userManager = userManager; } public async Task<IViewComponentResult> InvokeAsync() { List<StudentViewModel> allUsers = new List<StudentViewModel>(); var items = await _userManager.Users.ToListAsync(); foreach (var item in items) { allUsers.Add(new StudentViewModel {Id=item.Id, EnrollmentNo = item.EnrollmentNo, FatherName = item.FatherName, Name = item.Name, Age = item.Age, Birthdate = item.Birthdate, Address = item.Address, Gender = item.Gender, Email = item.Email }); }
In my previous article we have already seen this article(Insert and retrieved) using ado.net in asp.net, On that time we used nvarchar(size) datatype to store the image in database. Today, i am talking about image data type. Actually image data type store image in binary format. Also i will use edmx file or you can say entity framework to store and retrieve image from database table. First to create a database table in sql server management studio. Now, your table script look like:
GO
/****** Object: Table [dbo].[tblPicture] Script Date: 4/3/2015 6:28:16 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[tblPicture](
[id] [int] IDENTITY(1,1) NOT NULL,
[pic] [image] NULL,
CONSTRAINT [PK_tblPicture] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
Now, script generate the following design:
Now, come to visual studio and create a new windows form project. Add two button control in the form, one for add image into database and another for retrieving image from table. Now add edmx file in the solution. After that you can write code in button click event handler block.
Code for insert image into database table:
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog opendlg = new OpenFileDialog();
if(opendlg.ShowDialog()==DialogResult.OK)
{
Image img = Image.FromFile(opendlg.FileName);
MemoryStream ms = new MemoryStream();
img.Save(ms, img.RawFormat);
htEntities1 ht = new htEntities1();
ht.tblPictures.Add(new tblPicture() { pic = ms.ToArray() });
ht.SaveChanges();
MessageBox.Show("Load Sucess");
}
}
Here,
- First to open file dialog box and then save image into MemoryStream class.
- Now, you can save the MemoryStream object into database table with the help of context class(htEntities1) and model class(tblPicture).
Code for retrieving image from database table:
private void button2_Click(object sender, EventArgs e){
htEntities1 ht = new htEntities1();
var item = ht.tblPictures.Where(a => a.id == 1004).SingleOrDefault();
byte[] arr = item.pic;
MemoryStream ms = new MemoryStream(arr);
pictureBox1.Image = Image.FromStream(ms);
}
Here,
- Retrieve record by using linq query with lambda expression.
- Retrieved record insert into byte type array.
- Now, array pass into MemoryStream class constructor as a parameter.
- Now, Bind the PictureBox with Stream class.
Comments
Post a Comment