mercredi 26 septembre 2012

How to delete many-to-many relationship in Entity Framework...

Hi Folks,

I've been searching the internet to find a simple way to delete a many-to-many relationship item using Entity Framework Code-First...

I couldn't find something very useful so I have written  my own code.

The problem is if you try to use a foreach statement you'll be able to delete the first item but not the others, as the collection would be modified.

So I made the following assumption: Two tables, the first is Contenu and the second Tag, with a many-to-many relationship in SQL Server, I called the table ContenuTag, but this table won't appear in our model (this is a normal behaviour).

So here's the code:

var contenu = db.Contenu.Where(c => c.IdContenu == idContenu).FirstOrDefault();
for (int i = 0; i< contenu.Tag.Count(); i++)
{
var tag = contenu.Tag.FirstOrDefault();

contenu.Tag.Remove(tag);               

db.SaveChanges();

}
 

Simple, yeah?

Hope this helps,

Raphaël

vendredi 10 février 2012

MVC 3 Helper for Hover Images...


Hi Folks,

In this post I will talk about something that I haven't found on the internet, which is quite simple to do, which is a MVC Helper for creating a Hover image button...

If you are a professional developer and work in a team, you must have people which make the graphical stuff of your website, because most developers (like me) just don't like it, it's just a completely separate job.

This code assumes that you already understand MVC.

So here are my images, one named OK.png and the other OK_Hover.png, that are located on the Content/Images/Buttons folder.
Now what I want do do is to use my helper (which appears on listing 1), to use it in my razor page, and that upon a click will redirect me to the corresponding view.
So in my index.cstml I have:
@using HoverImageHelper.Helpers;
@{
ViewBag.Title = "Index";
}

Index


@Html.ImageButton("OK", "OK")
So the first parameters corresponds to my PNG file, and the second to my action.
Listing 1

///
/// This function creates an image button with a hover, based on a an image name (must be .PNG)
/// and its corresponding hover image
///

///
///
///
///
///
public static MvcHtmlString ImageButton(this HtmlHelper helper, string imageName, string actionName, object routeValues)
{
//Gets the action name and routes
var urlHelper = new UrlHelper(helper.ViewContext.RequestContext);
var url = urlHelper.Action(actionName, routeValues);
//Creates the image tag
var imgTag = new TagBuilder("img");
var imageUrl = string.Format("/Content/Images/{0}.png", imageName);
imgTag.Attributes.Add("src", imageUrl);
imgTag.Attributes.Add("onmouseover", "this.src='" + imageUrl.Replace(".", "_hover.") + "'");
imgTag.Attributes.Add("onmouseout", "this.src='" + imageUrl + "'");
imgTag.Attributes.Add("border", "0");
//Creates the link tag
TagBuilder imglink = new TagBuilder("a");
imglink.MergeAttribute("href", url);
imglink.InnerHtml = imgTag.ToString(TagRenderMode.SelfClosing);
return MvcHtmlString.Create(imglink.ToString());
}
And a corresponding overload (which I use on this example):
Listing 2
public static MvcHtmlString ImageButton(this HtmlHelper helper, string imageName, string actionName)
{
return ImageButton(helper, imageName, actionName, null);
}
Happy programming!!!
You can grab the full code here:


Excel Macro Tip

Hi All,

When I began writing macros in Excel 5.0 I didn't know how to find the last cell row, given a column...And that's useful, suppose you have a user form, and that you want to put the content of that userform on a sheet.So here's the tip: you just have to declare a long variable (you need this because on Excel 2003/2007 you have more than 32768 rows on a sheet).You can write it like this:

Dim lastRow as Long

LastRow=range("A65536").end(xlup).row

And that's it, folks!!!