Business Connectivity Services (BCS), one of the key components of SharePoint 2010, helps you to access external line-of-business (LOB) data. The SharePoint team posted a blog entry which demonstrates how to create your first BDC (Business Data Connectivity) model using Visual Studio 2010. As indicated in the post, you can use Visual Studio 2010 to deploy your BDC model to Microsoft SharePoint Server 2010.
However, if you are using Microsoft SharePoint Foundation 2010 on your develop machine, or you want to make the model deployable to Microsoft SharePoint Foundation 2010 on other machines, you will need to write a Feature Event Receiver to enable the deployment of BDC models from within Visual Studio 2010. In this blog post, I’ll show you how to create a Feature Event Receiver to do so.
Here are the detailed steps:
C# Project - - Assembly = $SharePoint.Project.AssemblyFullName$ - Class Name = BDCModelReceiver.Features.Feature1.ImportModelReceiver
VB Project – - Assembly = $SharePoint.Project.AssemblyFullName$ - *Class Name = BdcModelProject1.BDCModelReceiver.Features.Feature1.ImportModelReceiver * Replace “BdcModelProject1” with your own project name
VB Project - - *Receiver Class = BdcModelProject1.BDCModelReceiver.Features.Feature1.ImportModelReceiver * Replace “BdcModelProject1” with your own project name
For more information about Business Connectivity Services, please also check out BCS Team blog.
Why the Feature Event Receiver is required for BDC feature deployment on SharePoint Foundation?
After following instructions for setting up SharePoint 2010 on Windows 7, following the first BDC Project instructions and following this blog about Fearure Event Receiver, I get 500 - Internal Server Error at the "Adding Solution" step of deployment process. Any suggestions?
You should try adding the EnableDiagnostics registry key (http://blogs.msdn.com/vssharepointtoolsblog/archive/2010/01/07/how-to-get-more-information-about-the-exceptions-that-can-happen-in-sharepoint-2010-projects.aspx) and in case you get any errors during deployment you will see the actual exception which makes it easier to troubleshoot.
To answer your question: BDC deployment relies on feature event receiver to take care of actions like model import/feature activation. Unfortunately the assembly where the feature event receiver lives does not ship with SharePoint Foundation. And the reason for that is same assembly has other functionalities that we decided not to ship in Foundation and we couldn’t find a cost-effective way to support the receiver in Foundation.
Hope this helps.
Program Manager, Visual Studio team
i've tried your solution but when i try to deploy it it gives me
Error occurred in deployment step 'Add Solution': Failed to create receiver object from assembly "BdcModelProject1, Version=184.108.40.206, Culture=neutral, PublicKeyToken=6f4926deb40cae08", class "BdcModelProject1.BDCModelReceiver.Features.Feature1.ImportModelReceiver " for feature "BdcModelProject1_Feature1" (ID: a8a480c6-f1f0-4a5a-a37c-2259a0118919).: System.ArgumentNullException: Value cannot be null.
Parameter name: type
at System.Activator.CreateInstance(Type type, Boolean nonPublic)
Do you have any clue?
From the error it looks like SharePoint failed to instantiate your receiver class. There is a possibility this happens because the feature receiver assembly/class settings do not match the receiver class name which is defined in Feature.EventReceiver.cs/vb file. Can you please check the property settings in step5 and 6, and make sure the receiver assembly and class properties in both places match the feature event receiver name exactly in code file? Please note that the settings in vb project is slightly different than C# project.
Please let us know how this works out. If you still see the error, can you send your project to me (ronglu at microsoft.com) so we can help identify the problem?
Excellent - just what I wanted to learn.
Following the first BDC Project instructions and following the blog entry about Fearure Event Receiver, I get 500 - Internal Server Error at the "Adding Solution" step of deployment process (in your video, when you press F5). I use Windows 7
Can you check if your SharePoint site can be accessed directly without using VS? i.e. open internet browser and type in your local SharePoint site address directly. I'm guessing you're seeing the error because VS is unable to communicate to your SharePoint server when F5. Let me know what you find out. If the SharePoint site is fine and you still see the error, I can't think of other possibilities at this moment, but if you can send me (ronglu at microsoft.com) your project, we should be able to help identify.
I'm having a similar problem to nego.tk where I receive the following error message:
at System.Activator.CreateInstance(Type type, Boolean nonPublic)
I also find it strange that I've upgraded my development environment from Sharepoint Foundation to Sharepoint Server Standard and I still have to manually develop this feature event receiver. I thought I shouldn't have to do so for Sharepoint Server?
Hi KB Weeks,
You should be able to deloy BDC model to SharePoint Server from within VS without having to manually add feature event receiver. It's strange you can't do so. What's the error message you see?
I got your email that has your project and I'll try to get back to you as soon as possible. Sorry I'm caught in various things right now. Thanks for your patience.
Great post and really useful! I'm still getting my head around what all the steps actually mean (especially steps 5 & 6), but it all worked and got my list of Twitter friends in to an external SharePoint list. Pointless, but fun anyway :) Thanks!
Hi After following your instructions I get the following errors
Error 1 Error occurred in deployment step 'Add Solution': Failed to load receiver assembly " BdcModelProject2, Version=220.127.116.11, Culture=neutral, PublicKeyToken=359091437b6defd0" for feature "BdcModelProject2_Feature1" (ID: ed9d4d9b-bfe9-4778-8a8f-d24381fffa83).: System.IO.FileNotFoundException: Could not load file or assembly 'BdcModelProject2, Version=18.104.22.168, Culture=neutral, PublicKeyToken=359091437b6defd0' or one of its dependencies. The system cannot find the file specified.
File name: 'BdcModelProject2, Version=22.214.171.124, Culture=neutral, PublicKeyToken=359091437b6defd0'
at System.Reflection.Assembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection)
at System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
at System.Reflection.Assembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
at System.Reflection.Assembly.Load(String assemblyString)
WRN: Assembly binding logging is turned OFF.
To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1.
Note: There is some performance penalty associated with assembly bind failure logging.
To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].
0 0 BdcModelProject2
Any help would be appreciated
Perfect! I had a problem with DLL and followind this steps it was fixed!